Kubo: IPFS-Implementierung in GO
Die erste Implementierung von IPFS.
Kubo war die erste IPFS-Implementierung und ist heute die am weitesten verbreitete. Implementierung des Interplanetary Filesystems – des Web3-Standards für die Inhaltsadressierung, interoperabel mit HTTP. Unterstützt durch IPLDs Datenmodelle und libp2p für die Netzwerkkommunikation. Kubo ist in Go geschrieben.
Funktionsumfang
Führt einen IPFS-Knoten als Netzwerkdienst aus, der Teil von LAN- und WAN-DHT ist
HTTP-Gateway-Funktionalität ( /ipfs
und /ipns
) für vertrauenswürdigen und vertrauenswürdigen Inhaltsabruf
HTTP Routing V1 ( /routing/v1
) Client- und Serverimplementierung für delegierte Routing-Suchen
HTTP Kubo RPC API ( /api/v0
) für den Zugriff und die Steuerung des Daemons
Befehlszeilenschnittstelle basierend auf der RPC-API ( /api/v0
).
WebUI zur Verwaltung des Kubo-Knotens
Unterstützung der Inhaltsblockierung für Betreiber öffentlicher Knoten
Siehe Liste
IPFS ist ein globales, versioniertes Peer-to-Peer-Dateisystem. Es vereint gute Ideen aus früheren Systemen wie Git, BitTorrent, Kademlia, SFS und dem Web. Es ist wie ein einzelner BitTorrent-Schwarm, der Git-Objekte austauscht. IPFS bietet eine Schnittstelle, die so einfach ist wie das HTTP-Web, jedoch mit integrierter Permanenz. Sie können die Welt auch unter /ipfs mounten.
Weitere Informationen finden Sie unter: https://docs.ipfs.tech/concepts/what-is-ipfs/
Bevor Sie ein Problem eröffnen, sollten Sie einen der folgenden Speicherorte verwenden, um sicherzustellen, dass Sie Ihren Thread an der richtigen Stelle öffnen:
Kubo -Implementierungsfehler (früher go-ipfs genannt) in diesem Repo.
Dokumentationsprobleme in ipfs/docs-Problemen.
IPFS- Design in ipfs/specs-Problemen.
Erkundung neuer Ideen zu ipfs/notes-Problemen.
Stellen Sie Fragen und treffen Sie den Rest der Community im IPFS-Forum.
Oder chatten Sie mit uns.
Meilensteine auf GitHub
Was ist Kubo?
Was ist IPFS?
Nächste Meilensteine
Inhaltsverzeichnis
Sicherheitsprobleme
Minimale Systemanforderungen
Installieren
Installieren Sie Go
Laden Sie IPFS herunter und kompilieren Sie es
Fehlerbehebung
Cross-Compiling
MacPorts
Nix
Homebrew
Schokoladend
Scoop
ArchLinux
Gentoo Linux
Nix
Solus
openSUSE
Guix
Schnapp
Ubuntu PPA
Aktualisierung
Verwenden von ipfs-update
Herunterladen von Builds mit IPFS
Docker
Offizielle vorgefertigte Binärdateien
Inoffizielle Linux-Pakete
Inoffizielle Windows-Pakete
Inoffizielle MacOS-Pakete
Aus der Quelle erstellen
Erste Schritte
Verwendung
Einige Dinge zum Ausprobieren
Fehlerbehebung
Pakete
Entwicklung
Karte der implementierten Subsysteme
CLI, HTTP-API, Architekturdiagramm
Testen
Entwicklungsabhängigkeiten
Hinweise für Entwickler
Informationen zum Betreuer
Mitwirken
Lizenz
Bitte folgen Sie SECURITY.md
.
IPFS kann auf den meisten Linux-, macOS- und Windows-Systemen ausgeführt werden. Wir empfehlen, es auf einer Maschine mit mindestens 4 GB RAM und 2 CPU-Kernen auszuführen (Kubo ist hochgradig parallel). Auf Systemen mit weniger Speicher ist es möglicherweise nicht vollständig stabil und Sie laufen auf eigenes Risiko.
Die kanonischen Downloadanweisungen für IPFS finden Sie unter: https://docs.ipfs.tech/install/. Es wird dringend empfohlen , diese Anweisungen zu befolgen, wenn Sie nicht daran interessiert sind, an der IPFS-Entwicklung zu arbeiten.
Offizielle Bilder werden unter https://hub.docker.com/r/ipfs/kubo/ veröffentlicht:
? Veröffentlichungen
Die Tags latest
und „ release
“ verweisen immer auf die neueste stabile Version
vN.NN
verweist auf ein bestimmtes Release-Tag
Es handelt sich um Bilder in Produktionsqualität.
? Wir bieten auch experimentelle Entwickler-Builds an
master-latest
zeigt immer auf den HEAD
des master
-Zweigs
master-YYYY-DD-MM-GITSHA
zeigt auf einen bestimmten Commit aus dem master
Zweig
Diese Tags werden von Entwicklern für interne Tests verwendet und sind nicht für Endbenutzer oder Produktionszwecke gedacht.
$ docker pull ipfs/kubo:latest$ docker run --rm -it --net=host ipfs/kubo:latest
Um Ihren Knoten anzupassen, übergeben Sie die erforderliche Konfiguration über -e
oder indem Sie Skripte in /container-init.d
bereitstellen.
Erfahren Sie mehr unter https://docs.ipfs.tech/install/run-ipfs-inside-docker/
Die offiziellen Binärdateien werden unter https://dist.ipfs.tech#kubo veröffentlicht:
Von dort:
Klicken Sie rechts auf der Seite auf das blaue Symbol „Kubo herunterladen“.
Öffnen/extrahieren Sie das Archiv.
Verschieben Sie kubo ( ipfs
) in Ihren Pfad ( install.sh
kann das für Sie erledigen).
Wenn Sie nicht auf dist.ipfs.tech zugreifen können, können Sie kubo (go-ipfs) auch herunterladen von:
Die GitHub-Releases-Seite dieses Projekts
/ipns/dist.ipfs.tech
am dweb.link-Gateway
IPFS verfügt über ein Aktualisierungstool, auf das über ipfs update
zugegriffen werden kann. Das Tool wird nicht zusammen mit IPFS installiert, um diese Logik unabhängig von der Hauptcodebasis zu halten. Um ipfs-update
Tool zu installieren, laden Sie es hier herunter.
Listen Sie die verfügbaren Versionen der Kubo-Implementierung (go-ipfs) auf:
$ ipfs cat /ipns/dist.ipfs.tech/kubo/versions
Um dann die verfügbaren Builds für eine Version aus dem vorherigen Befehl ( $VERSION
) anzuzeigen:
$ ipfs ls /ipns/dist.ipfs.tech/kubo/$VERSION
So laden Sie einen bestimmten Build einer Version herunter:
$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # darwin 32-bit build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $VERSION_darwin-amd64.tar.gz # Darwin 64-Bit-Build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd 64-Bit-Build$ ipfs get / ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-386.tar.gz # Linux 32-Bit-Build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64 .tar.gz # Linux 64-Bit-Build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-arm.tar.gz # Linux Arm build$ ipfs get /ipns/dist.ipfs. tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # Windows 64-Bit-Build
ArchLinux
Gentoo Linux
Nix
Solus
openSUSE
Guix
Schnapp
Ubuntu PPA
# pacman -S kubo
https://wiki.gentoo.org/wiki/Kubo
# emerge -a net-p2p/kubo
https://packages.gentoo.org/packages/net-p2p/kubo
Mit dem rein funktionalen Paketmanager Nix kann man kubo (go-ipfs) so installieren:
$ nix-env -i kubo
Sie können das Paket auch mithilfe seines Attributnamens installieren, der ebenfalls kubo
lautet.
Paket für Solus
$ sudo eopkg install kubo
Sie können es auch über das Solus-Softwarecenter installieren.
Community-Paket für go-ipfs
Das Community-Paket für go-ipfs ist nicht veraltet.
Wird nicht mehr unterstützt, siehe Begründung in kubo#8688.
PPA-Homepage auf Launchpad.
sudo add-apt-repository ppa:twdragon/ipfs Sudo apt-Update sudo apt installiere 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 update sudo apt installiere ipfs-kubo
Dabei ist <
der Codename Ihrer Ubuntu-Distribution (z. B. jammy
für 22.04 LTS). Während der ersten Installation fragt Sie das Paketwartungsskript möglicherweise automatisch, welches Netzwerkprofil, welches CPU-Abrechnungsmodell und/oder welche vorhandene Knotenkonfigurationsdatei Sie verwenden möchten.
HINWEIS : Diese Methode funktioniert möglicherweise auch mit jeder kompatiblen Debian-basierten Distribution, die libc6
enthält und APT als Paketmanager.
Schokoladend
Scoop
Wird nicht mehr unterstützt, siehe Begründung in kubo#9341.
Scoop stellt Kubo als kubo
in seinem „Extras“-Bucket bereit.
PS> Schaufeleimer, Extras hinzufügen PS> Scoop Install Kubo
MacPorts
Nix
Homebrew
Das Paket ipfs verweist derzeit auf kubo (go-ipfs) und wird gepflegt.
$ sudo port install ipfs
Unter macOS können Sie den rein funktionalen Paketmanager Nix nutzen:
$ nix-env -i kubo
Sie können das Paket auch mithilfe seines Attributnamens installieren, der ebenfalls kubo
lautet.
Eine Homebrew-Formel ipfs wird ebenfalls beibehalten.
$ brew install --formula ipfs
Das Build-System von kubo erfordert Go und einige Standard-POSIX-Build-Tools:
GNU machen
Git
GCC (oder ein anderer Go-kompatibler C-Compiler) (optional)
Um ohne GCC zu erstellen, erstellen Sie mit CGO_ENABLED=0
(z. B. make build CGO_ENABLED=0
).
Wenn Sie ein Update benötigen: Laden Sie die neueste Version von Go herunter.
Sie müssen die bin-Verzeichnisse von Go zu Ihrer Umgebungsvariablen $PATH
hinzufügen, indem Sie beispielsweise diese Zeilen zu /etc/profile
(für eine systemweite Installation) oder $HOME/.profile
hinzufügen:
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:$GOPATH/bin
(Wenn Sie auf Probleme stoßen, lesen Sie die Go-Installationsanweisungen.)
$ git clone https://github.com/ipfs/kubo.git $ cd kubo $ make install
Alternativ können Sie make build
ausführen, um die go-ipfs-Binärdatei zu erstellen (in cmd/ipfs/ipfs
zu speichern), ohne sie zu installieren.
HINWEIS: Wenn Sie eine Fehlermeldung wie „schwerwiegender Fehler: stdlib.h: Keine solche Datei oder kein solches Verzeichnis“ erhalten, fehlt Ihnen ein C-Compiler. Führen Sie entweder make
mit CGO_ENABLED=0
erneut aus oder installieren Sie GCC.
Das Kompilieren für eine andere Plattform ist so einfach wie das Ausführen:
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
Für den Aufbau unter Windows stehen gesonderte Anleitungen zur Verfügung.
git
ist erforderlich, damit go get
alle Abhängigkeiten abrufen kann.
Paketmanager enthalten häufig veraltete golang
-Pakete. Stellen Sie sicher, dass go version
mindestens 1.10 meldet. Informationen zur Installation von go finden Sie oben.
Wenn Sie an der Entwicklung interessiert sind, installieren Sie bitte auch die Entwicklungsabhängigkeiten.
Shell-Befehlsvervollständigungen können mit einem der ipfs commands completion
Unterbefehle generiert werden. Lesen Sie docs/command-completion.md, um mehr zu erfahren.
Im Ordner „misc“ erfahren Sie, wie Sie IPFS mit systemd oder dem von Ihrer Distribution verwendeten Init-System verbinden.
Um IPFS verwenden zu können, müssen Sie zunächst die Konfigurationsdateien von IPFS auf Ihrem System initialisieren. Dies erfolgt mit ipfs init
. Informationen zu den optionalen Argumenten finden Sie unter ipfs init --help
. Nachdem die Initialisierung abgeschlossen ist, können Sie ipfs mount
, ipfs add
und alle anderen Befehle zum Erkunden verwenden!
Grundlegender Nachweis, dass „ipfs“ lokal funktioniert:
echo "hello world" > hello ipfs add hello # This should output a hash string that looks something like: # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o ipfs cat
Informationen zur programmatischen Interaktion mit Kubo finden Sie in unserer Liste der HTTP/RPC-Clients.
Wenn Sie IPFS bereits zuvor installiert haben und Probleme damit haben, eine neuere Version zum Laufen zu bringen, versuchen Sie, Ihr IPFS-Konfigurationsverzeichnis (standardmäßig ~/.ipfs) zu löschen (oder an einem anderen Ort zu sichern) und ipfs init
erneut auszuführen. Dadurch wird die Konfigurationsdatei auf ihre Standardwerte zurückgesetzt und alle fehlerhaften Einträge aus dem lokalen Datenspeicher gelöscht.
Bitte richten Sie allgemeine Fragen und Hilfeanfragen an unsere Foren.
Wenn Sie glauben, einen Fehler gefunden zu haben, sehen Sie sich die Problemliste an. Wenn Sie Ihr Problem dort nicht finden, sprechen Sie uns entweder im Matrix-Chat an oder melden Sie selbst ein Problem!
Siehe IPFS in der GO-Dokumentation.
Einige Orte, die Ihnen den Einstieg in die Codebasis erleichtern:
Hauptdatei: ./cmd/ipfs/main.go
CLI-Befehle: ./core/commands/
Bitswap (die Datenhandelsmaschine): go-bitswap
libp2p
libp2p: https://github.com/libp2p/go-libp2p
DHT: https://github.com/libp2p/go-libp2p-kad-dht
IPFS: Der Befehl Add
entmystifiziert
WIP : Dies ist ein High-Level-Architekturdiagramm der verschiedenen Subsysteme dieser spezifischen Implementierung. Um darüber informiert zu werden, wie sie interagieren. Wer Vorschläge hat, kann hier gerne kommentieren, wie wir das verbessern können!
Herkunft
Beschreibung: Gepunktet bedeutet „wahrscheinlich verschwindend“. Die „Legacy“-Teile sind dünne Hüllen um einige Befehle, die zwischen dem neuen System und dem alten System übersetzt werden sollen. Die ausgegrauten Teile im „Daemon“-Diagramm sollen zeigen, dass der Code alle gleich ist. Wir schalten lediglich einige Teile ein und andere aus, je nachdem, ob wir auf dem Client oder dem Server laufen.
make test
Wenn Sie Änderungen an den Protokollpuffern vornehmen, müssen Sie den Protokoll-Compiler installieren.
Weitere Dokumentation für Entwickler finden Sie unter docs
Kubo wird von Shipyard gewartet.
Dieses Repository ist Teil der GO Triage-Triage von Shipyard.
Freigabeprozess
Wir ❤️ alle unsere Mitwirkenden; Ohne Sie wäre dieses Projekt nicht das, was es ist! Wenn Sie helfen möchten, lesen Sie bitte CONTRIBUTING.md.
Dieses Repository unterliegt dem IPFS-Verhaltenskodex.
Mitglieder der IPFS-Community bieten Kubo-Unterstützung in der Kategorie „Diskussionsforum“ hier.
Benötigen Sie Hilfe bei IPFS selbst? Erfahren Sie unter https://ipfs.tech/help, wo Sie Hilfe und Support erhalten.
Dieses Projekt ist unter den Bedingungen von Apache 2.0 und MIT doppelt lizenziert:
Apache-Lizenz, Version 2.0, (LICENSE-APACHE oder http://www.apache.org/licenses/LICENSE-2.0)
MIT-Lizenz (LICENSE-MIT oder http://opensource.org/licenses/MIT)