Kubo : Implémentation d'IPFS dans GO
La première implémentation d'IPFS.
Kubo a été la première implémentation d'IPFS et est la plus utilisée aujourd'hui. Implémentation du système de fichiers interplanétaire - le standard Web3 pour l'adressage de contenu, interopérable avec HTTP. Ainsi alimenté par les modèles de données d'IPLD et la libp2p pour la communication réseau. Kubo s'écrit en Go.
Ensemble de fonctionnalités
Exécute un nœud IPFS en tant que service réseau faisant partie du LAN et du WAN DHT
Fonctionnalité HTTP Gateway ( /ipfs
et /ipns
) pour la récupération de contenu fiable et sans confiance
Implémentation client et serveur HTTP Routing V1 ( /routing/v1
) pour les recherches de routage déléguées
API HTTP Kubo RPC ( /api/v0
) pour accéder et contrôler le démon
Interface de ligne de commande basée sur ( /api/v0
) API RPC
WebUI pour gérer le nœud Kubo
Prise en charge du blocage de contenu pour les opérateurs de nœuds publics
Voir la liste
IPFS est un système de fichiers peer-to-peer global, versionné. Il combine les bonnes idées des systèmes précédents tels que Git, BitTorrent, Kademlia, SFS et le Web. C'est comme un seul essaim BitTorrent, échangeant des objets git. IPFS fournit une interface aussi simple que le Web HTTP, mais avec une permanence intégrée. Vous pouvez également monter le monde sur /ipfs.
Pour plus d'informations, voir : https://docs.ipfs.tech/concepts/what-is-ipfs/
Avant d'ouvrir un problème, pensez à utiliser l'un des emplacements suivants pour vous assurer que vous ouvrez votre fil de discussion au bon endroit :
Bugs d'implémentation de Kubo (anciennement nommé go-ipfs) dans ce référentiel.
Problèmes de documentation dans les problèmes ipfs/docs.
Conception IPFS dans les problèmes ipfs/specs.
Exploration de nouvelles idées dans les numéros ipfs/notes.
Posez des questions et rencontrez le reste de la communauté au forum IPFS.
Ou discutez avec nous.
Jalons sur GitHub
Qu’est-ce que Kubo ?
Qu’est-ce qu’IPFS ?
Prochaines étapes
Table des matières
Problèmes de sécurité
Configuration système minimale requise
Installer
Installer Aller
Téléchargez et compilez IPFS
Dépannage
Compilation croisée
MacPorts
Rien
Homebrew
Chocolaté
Scoop
ArchLinux
Gentoo Linux
Rien
Solus
ouvertSUSE
Guix
Instantané
UbuntuPPA
Mise à jour
Utiliser ipfs-update
Téléchargement de builds à l'aide d'IPFS
Docker
Binaires officiels prédéfinis
Packages Linux non officiels
Packages Windows non officiels
Packages MacOS non officiels
Construire à partir de la source
Commencer
Usage
Quelques choses à essayer
Dépannage
Forfaits
Développement
Carte des sous-systèmes implémentés
CLI, HTTP-API, diagramme d'architecture
Essai
Dépendances de développement
Notes du développeur
Informations sur le responsable
Contribuer
Licence
Veuillez suivre SECURITY.md
.
IPFS peut fonctionner sur la plupart des systèmes Linux, macOS et Windows. Nous vous recommandons de l'exécuter sur une machine dotée d'au moins 4 Go de RAM et de 2 cœurs de processeur (kubo est hautement parallèle). Sur les systèmes dotés de moins de mémoire, il se peut qu'il ne soit pas complètement stable et vous le courez à vos propres risques.
Les instructions de téléchargement canonique pour IPFS se trouvent sur : https://docs.ipfs.tech/install/. Il est fortement recommandé de suivre ces instructions si vous n'êtes pas intéressé à travailler sur le développement IPFS.
Les images officielles sont publiées sur https://hub.docker.com/r/ipfs/kubo/ :
? Sorties
Les balises latest
et release
pointent toujours vers la dernière version stable
vN.NN
pointe vers une balise de version spécifique
Ce sont des images de qualité production.
? Nous fournissons également des versions expérimentales pour les développeurs
master-latest
pointe toujours vers le HEAD
de la branche master
master-YYYY-DD-MM-GITSHA
pointe vers un commit spécifique de la branche master
Ces balises sont utilisées par les développeurs à des fins de tests internes et ne sont pas destinées aux utilisateurs finaux ou à une utilisation en production.
$ docker pull ipfs/kubo:latest$ docker run --rm -it --net=host ipfs/kubo:latest
Pour personnaliser votre nœud, transmettez la configuration nécessaire via -e
ou en montant des scripts dans le /container-init.d
.
Apprenez-en plus sur https://docs.ipfs.tech/install/run-ipfs-inside-docker/
Les binaires officiels sont publiés sur https://dist.ipfs.tech#kubo :
A partir de là :
Cliquez sur le bleu « Télécharger Kubo » sur le côté droit de la page.
Ouvrez/extrayez l'archive.
Déplacez kubo ( ipfs
) vers votre chemin ( install.sh
peut le faire pour vous).
Si vous ne parvenez pas à accéder à dist.ipfs.tech, vous pouvez également télécharger kubo (go-ipfs) depuis :
la page des versions GitHub de ce projet
/ipns/dist.ipfs.tech
sur la passerelle dweb.link
IPFS dispose d'un outil de mise à jour accessible via ipfs update
. L'outil n'est pas installé avec IPFS afin de garder cette logique indépendante de la base de code principale. Pour installer l'outil ipfs-update
, téléchargez-le ici.
Répertoriez les versions disponibles de l'implémentation de Kubo (go-ipfs) :
$ ipfs chat /ipns/dist.ipfs.tech/kubo/versions
Ensuite, pour afficher les builds disponibles pour une version de la commande précédente ( $VERSION
) :
$ ipfs ls /ipns/dist.ipfs.tech/kubo/$VERSION
Pour télécharger une version donnée d'une version :
$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # darwin 32 bits build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $VERSION_darwin-amd64.tar.gz # build Darwin 64 bits$ ipfs obtient /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd 64 bits build$ ipfs obtient /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$ VERSION_linux-386.tar.gz # Linux 32 bits build$ ipfs obtenir /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64.tar.gz # Linux 64 bits build$ ipfs obtenir /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux- arm.tar.gz # Linux arm build$ ipfs obtenir /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # version Windows 64 bits
ArchLinux
Gentoo Linux
Rien
Solus
ouvertSUSE
Guix
Instantané
UbuntuPPA
#pacman -S kubo
https://wiki.gentoo.org/wiki/Kubo
#merge -a net-p2p/kubo
https://packages.gentoo.org/packages/net-p2p/kubo
Avec le gestionnaire de packages purement fonctionnel Nix, vous pouvez installer kubo (go-ipfs) comme ceci :
$ nix-env -i kubo
Vous pouvez également installer le package en utilisant son nom d'attribut, qui est également kubo
.
Forfait pour Solus
$ sudo eopkg install kubo
Vous pouvez également l'installer via le centre logiciel Solus.
Package communautaire pour go-ipfs
Le package communautaire pour go-ipfs n’est pas obsolète.
N'est plus pris en charge, voir la justification dans kubo#8688.
Page d'accueil PPA sur Launchpad.
sudo add-apt-repository ppa:twdragon/ipfs sudo apt mise à jour sudo apt installer ipfs-kubo
sudo suecho 'deb https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <> main' >> /etc/apt/sources.list.d/ipfsecho 'deb-src https://ppa. launchpadcontent.net/twdragon/ipfs/ubuntu < > main' >> /etc/apt/sources.list.d/ipfsexitsudo apt mise à jour sudo apt installer ipfs-kubo
où <
est le nom de code de votre distribution Ubuntu (par exemple, jammy
pour 22.04 LTS). Lors de la première installation, le script de maintenance du package peut vous demander automatiquement quel profil réseau, quel modèle de comptabilité CPU et/ou fichier de configuration de nœud existant vous souhaitez utiliser.
REMARQUE : cette méthode peut également fonctionner avec n'importe quelle distribution compatible basée sur Debian contenant libc6
et APT comme gestionnaire de paquets.
Chocolaté
Scoop
N'est plus pris en charge, voir la justification dans kubo#9341.
Scoop fournit le kubo en tant que kubo
dans son seau « extras ».
PS> scoop bucket ajouter des extras PS> scoop installer Kubo
MacPorts
Rien
Homebrew
Le package ipfs pointe actuellement vers kubo (go-ipfs) et est en cours de maintenance.
$ sudo port install ipfs
Sous macOS, vous pouvez utiliser le gestionnaire de packages purement fonctionnel Nix :
$ nix-env -i kubo
Vous pouvez également installer le package en utilisant son nom d'attribut, qui est également kubo
.
Une formule Homebrew ipfs est également maintenue.
$ brew install --formula ipfs
Le système de build de kubo nécessite Go et certains outils de build POSIX standard :
Marque GNU
Git
GCC (ou un autre compilateur C compatible Go) (facultatif)
Pour construire sans GCC, construisez avec CGO_ENABLED=0
(par exemple, make build CGO_ENABLED=0
).
Si vous devez mettre à jour : Téléchargez la dernière version de Go.
Vous devrez ajouter les répertoires bin de Go à votre variable d'environnement $PATH
, par exemple en ajoutant ces lignes à votre /etc/profile
(pour une installation à l'échelle du système) ou $HOME/.profile
:
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:$GOPATH/bin
(Si vous rencontrez des problèmes, consultez les instructions d'installation de Go).
$ git clone https://github.com/ipfs/kubo.git $ cd kubo $ make install
Alternativement, vous pouvez exécuter make build
pour créer le binaire go-ipfs (en le stockant dans cmd/ipfs/ipfs
) sans l'installer.
REMARQUE : si vous obtenez une erreur du type « erreur fatale : stdlib.h : aucun fichier ou répertoire de ce type », il vous manque un compilateur C. Soit réexécutez make
avec CGO_ENABLED=0
, soit installez GCC.
Compiler pour une autre plate-forme est aussi simple que d'exécuter :
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
Des instructions distinctes sont disponibles pour la création sous Windows.
git
est requis pour go get
récupérer toutes les dépendances.
Les gestionnaires de packages contiennent souvent des packages golang
obsolètes. Assurez-vous que go version
signale au moins 1.10. Voir ci-dessus pour savoir comment installer go.
Si le développement vous intéresse, veuillez également installer les dépendances de développement.
Les complétions de commandes Shell peuvent être générées avec l'une des sous-commandes ipfs commands completion
. Lisez docs/command-completion.md pour en savoir plus.
Consultez le dossier misc pour savoir comment connecter IPFS à systemd ou à tout autre système d'initialisation utilisé par votre distribution.
Pour commencer à utiliser IPFS, vous devez d'abord initialiser les fichiers de configuration d'IPFS sur votre système, cela se fait avec ipfs init
. Voir ipfs init --help
pour plus d'informations sur les arguments facultatifs nécessaires. Une fois l'initialisation terminée, vous pouvez utiliser ipfs mount
, ipfs add
et n'importe laquelle des autres commandes à explorer !
Preuve de base du « fonctionnement d'ipfs » localement :
echo "hello world" > hello ipfs add hello # This should output a hash string that looks something like: # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o ipfs cat
Pour une interaction programmatique avec Kubo, consultez notre liste de clients HTTP/RPC.
Si vous avez déjà installé IPFS auparavant et que vous rencontrez des problèmes pour faire fonctionner une version plus récente, essayez de supprimer (ou de sauvegarder ailleurs) votre répertoire de configuration IPFS (~/.ipfs par défaut) et de réexécuter ipfs init
. Cela réinitialisera le fichier de configuration à ses valeurs par défaut et effacera la banque de données locale de toutes les mauvaises entrées.
Veuillez adresser vos questions générales et vos demandes d'aide à nos forums.
Si vous pensez avoir trouvé un bug, consultez la liste des problèmes et, si vous n'y voyez pas votre problème, venez nous parler sur le chat Matrix ou déposez votre propre problème !
Voir IPFS dans la documentation GO.
Quelques endroits pour vous aider à démarrer sur la base de code :
Fichier principal : ./cmd/ipfs/main.go
Commandes CLI : ./core/commands/
Bitswap (le moteur d'échange de données) : go-bitswap
libp2p
libp2p : https://github.com/libp2p/go-libp2p
DHT : https://github.com/libp2p/go-libp2p-kad-dht
IPFS : La commande Add
démystifiée
WIP : Il s'agit d'un diagramme d'architecture de haut niveau des différents sous-systèmes de cette implémentation spécifique. Pour être mis à jour avec la façon dont ils interagissent. Quiconque a des suggestions est invité à commenter ici sur la façon dont nous pouvons améliorer cela !
Origine
Description : Le pointillé signifie « s'en va probablement ». Les parties « Legacy » sont de fines enveloppes autour de certaines commandes à traduire entre le nouveau système et l'ancien système. Les parties grisées sur le diagramme du "démon" sont là pour montrer que le code est identique, c'est juste que nous activons et désactivons certaines parties selon que nous fonctionnons sur le client ou sur le serveur.
make test
Si vous apportez des modifications aux tampons de protocole, vous devrez installer le compilateur de protocole.
Trouver plus de documentation pour les développeurs sur Docs
Kubo est entretenu par Shipyard.
Ce référentiel fait partie du triage GO Triage du chantier naval.
Processus de libération
Nous ❤️ tous nos contributeurs ; ce projet ne serait pas ce qu'il est sans vous ! Si vous souhaitez aider, veuillez consulter CONTRIBUTING.md.
Ce référentiel relève du code de conduite IPFS.
Les membres de la communauté IPFS fournissent une assistance Kubo dans la catégorie du forum de discussion ici.
Besoin d'aide avec IPFS lui-même ? Découvrez où obtenir de l'aide et du support sur https://ipfs.tech/help.
Ce projet bénéficie d'une double licence sous les termes Apache 2.0 et MIT :
Licence Apache, version 2.0 (LICENSE-APACHE ou http://www.apache.org/licenses/LICENSE-2.0)
Licence MIT (LICENSE-MIT ou http://opensource.org/licenses/MIT)