Kubo: การใช้งาน IPFS ใน GO
การใช้งาน IPFS ครั้งแรก
Kubo เป็นการนำ IPFS ไปใช้ครั้งแรกและมีการใช้กันอย่างแพร่หลายมากที่สุดในปัจจุบัน การใช้ ระบบไฟล์ระหว่างดาวเคราะห์ - มาตรฐาน Web3 สำหรับการกำหนดที่อยู่เนื้อหา ทำงานร่วมกับ HTTP ได้ ขับเคลื่อนโดยโมเดลข้อมูลของ IPLD และ libp2p สำหรับการสื่อสารเครือข่าย Kubo เขียนด้วยภาษา Go
ชุดคุณลักษณะ
รัน IPFS-Node เป็นบริการเครือข่ายที่เป็นส่วนหนึ่งของ LAN และ WAN DHT
ฟังก์ชันการทำงานของเกตเวย์ HTTP ( /ipfs
และ /ipns
) สำหรับการดึงเนื้อหาที่เชื่อถือได้และไม่น่าเชื่อถือ
การใช้งานไคลเอ็นต์และเซิร์ฟเวอร์ HTTP Routing V1 ( /routing/v1
) สำหรับการค้นหาเส้นทางที่ได้รับมอบหมาย
HTTP Kubo RPC API ( /api/v0
) เพื่อเข้าถึงและควบคุม daemon
อินเทอร์เฟซบรรทัดคำสั่งที่ใช้ ( /api/v0
) RPC API
WebUI เพื่อจัดการโหนด Kubo
การสนับสนุนการบล็อกเนื้อหาสำหรับผู้ปฏิบัติงานของโหนดสาธารณะ
ดูรายการ
IPFS คือระบบไฟล์แบบเพียร์ทูเพียร์แบบสากลที่มีเวอร์ชัน มันรวมแนวคิดดีๆ จากระบบก่อนหน้านี้ เช่น Git, BitTorrent, Kademlia, SFS และเว็บ มันเหมือนกับฝูง BitTorrent เดียวที่แลกเปลี่ยนวัตถุคอมไพล์ IPFS จัดเตรียมอินเทอร์เฟซที่เรียบง่ายเหมือนกับเว็บ HTTP แต่มีความคงทนในตัว คุณยังสามารถเมานต์โลกได้ที่ /ipfs
สำหรับข้อมูลเพิ่มเติมโปรดดู: https://docs.ipfs.tech/concepts/what-is-ipfs/
ก่อนที่จะเปิดประเด็น ให้พิจารณาใช้ตำแหน่งใดตำแหน่งหนึ่งต่อไปนี้เพื่อให้แน่ใจว่าคุณเปิดกระทู้ถูกที่:
ข้อบกพร่อง ในการใช้งาน kubo (ก่อนหน้านี้ชื่อ go-ipfs) ใน repo นี้
ปัญหาด้านเอกสารในปัญหา ipfs/docs
การออกแบบ IPFS ในประเด็น ipfs/specs
การสำรวจแนวคิดใหม่ๆ ในประเด็น ipfs/notes
ถามคำถามและพบปะกับคนอื่นๆ ในชุมชนที่ IPFS Forum
หรือทักแชทได้เลย
เหตุการณ์สำคัญบน GitHub
คุโบะคืออะไร?
IPFS คืออะไร?
เหตุการณ์สำคัญต่อไป
สารบัญ
ปัญหาด้านความปลอดภัย
ความต้องการของระบบขั้นต่ำ
ติดตั้ง
ติดตั้ง Go
ดาวน์โหลดและคอมไพล์ IPFS
การแก้ไขปัญหา
การรวบรวมข้าม
แมคพอร์ต
ห้าม
โฮมบรูว์
ช็อคโกแลต
ตัก
อาร์คลินุกซ์
เจนทู ลินุกซ์
ห้าม
โซลัส
openSUSE
กีกซ์
สแน็ป
อูบุนตู PPA
กำลังอัปเดต
การใช้ ipfs-update
การดาวน์โหลดบิลด์โดยใช้ IPFS
นักเทียบท่า
ไบนารีที่สร้างไว้ล่วงหน้าอย่างเป็นทางการ
แพ็คเกจ Linux อย่างไม่เป็นทางการ
แพ็คเกจ Windows อย่างไม่เป็นทางการ
แพ็คเกจ MacOS อย่างไม่เป็นทางการ
สร้างจากแหล่งที่มา
เริ่มต้นใช้งาน
การใช้งาน
บางสิ่งที่น่าลอง
การแก้ไขปัญหา
แพ็คเกจ
การพัฒนา
แผนที่ของระบบย่อยที่นำไปใช้
CLI, HTTP-API, ไดอะแกรมสถาปัตยกรรม
การทดสอบ
การพึ่งพาการพัฒนา
หมายเหตุสำหรับนักพัฒนา
ข้อมูลผู้ดูแล
มีส่วนร่วม
ใบอนุญาต
โปรดติดตาม SECURITY.md
IPFS สามารถทำงานได้บนระบบ Linux, macOS และ Windows ส่วนใหญ่ เราขอแนะนำให้รันบนเครื่องที่มี RAM อย่างน้อย 4 GB และแกน CPU 2 ตัว (kubo เป็นแบบขนานอย่างมาก) บนระบบที่มีหน่วยความจำน้อย อาจไม่เสถียรอย่างสมบูรณ์ และคุณต้องแบกรับความเสี่ยงเอง
คำแนะนำการดาวน์โหลด Canonical สำหรับ IPFS มีอยู่ที่: https://docs.ipfs.tech/install/ ขอแนะนำเป็นอย่างยิ่ง ให้คุณปฏิบัติตามคำแนะนำเหล่านั้นหากคุณไม่สนใจที่จะพัฒนา IPFS
ภาพอย่างเป็นทางการมีการเผยแพร่ที่ https://hub.docker.com/r/ipfs/kubo/:
- ข่าวประชาสัมพันธ์
แท็ก latest
และ release
จะชี้ไปที่รีลีสเสถียรล่าสุดเสมอ
vN.NN
ชี้ไปที่แท็กการเปิดตัวเฉพาะ
ภาพเหล่านี้เป็นภาพระดับการผลิต
- นอกจากนี้เรายังมีรุ่นทดลองสำหรับนักพัฒนาอีกด้วย
master-latest
จะชี้ไปที่ HEAD
ของ master
สาขาเสมอ
master-YYYY-DD-MM-GITSHA
ชี้ไปที่การคอมมิตเฉพาะจากสาขา master
นักพัฒนาซอฟต์แวร์ใช้แท็กเหล่านี้เพื่อการทดสอบภายใน ซึ่งไม่ได้มีไว้สำหรับผู้ใช้ปลายทางหรือการใช้งานจริง
$ docker pull ipfs/kubo:latest$ docker run --rm -it --net=host ipfs/kubo:latest
หากต้องการปรับแต่งโหนดของคุณ ให้ส่งการกำหนดค่าที่จำเป็นผ่าน -e
หรือโดยการติดตั้งสคริปต์ใน /container-init.d
เรียนรู้เพิ่มเติมที่ https://docs.ipfs.tech/install/run-ipfs-inside-docker/
ไบนารีอย่างเป็นทางการมีการเผยแพร่ที่ https://dist.ipfs.tech#kubo:
จากนั้น:
คลิก "ดาวน์โหลด Kubo" สีฟ้าทางด้านขวาของหน้า
เปิด/แตกไฟล์เก็บถาวร
ย้าย kubo ( ipfs
) ไปยังเส้นทางของคุณ ( install.sh
สามารถทำได้เพื่อคุณ)
หากคุณไม่สามารถเข้าถึง dist.ipfs.tech คุณสามารถดาวน์โหลด kubo (go-ipfs) ได้จาก:
หน้าเผยแพร่ GitHub ของโปรเจ็กต์นี้
/ipns/dist.ipfs.tech
ที่เกตเวย์ dweb.link
IPFS มีเครื่องมืออัปเดตที่สามารถเข้าถึงได้ผ่าน ipfs update
เครื่องมือนี้ไม่ได้รับการติดตั้งควบคู่ไปกับ IPFS เพื่อรักษาตรรกะนั้นให้เป็นอิสระจากโค้ดเบสหลัก หากต้องการติดตั้งเครื่องมือ ipfs-update
ให้ดาวน์โหลดได้ที่นี่
แสดงรายการการใช้งาน Kubo (go-ipfs) เวอร์ชันที่มีอยู่:
$ ipfs แมว /ipns/dist.ipfs.tech/kubo/versions
จากนั้น หากต้องการดูบิลด์ที่มีอยู่สำหรับเวอร์ชันจากคำสั่งก่อนหน้า ( $VERSION
):
$ ipfs ls /ipns/dist.ipfs.tech/kubo/$VERSION
หากต้องการดาวน์โหลดเวอร์ชันที่กำหนด:
$ ipfs รับ /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # ดาร์วิน 32 บิต build$ ipfs รับ /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $VERSION_darwin-amd64.tar.gz # ดาร์วิน 64-บิต build$ ipfs รับ /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd 64-บิต build$ ipfs รับ / ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-386.tar.gz # linux 32 บิต build$ ipfs รับ /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64 .tar.gz # linux 64 บิต build$ ipfs รับ /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-arm.tar.gz # linux arm build$ ipfs รับ /ipns/dist.ipfs tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # windows รุ่น 64 บิต
อาร์คลินุกซ์
เจนทู ลินุกซ์
ห้าม
โซลัส
openSUSE
กีกซ์
สแน็ป
อูบุนตู PPA
# pacman -S kubo
https://wiki.gentoo.org/wiki/Kubo
# โผล่ออกมา -a net-p2p/kubo
https://packages.gentoo.org/packages/net-p2p/kubo
ด้วยตัวจัดการแพ็คเกจ Nix ที่ใช้งานได้จริง คุณสามารถติดตั้ง kubo (go-ipfs) ได้ดังนี้:
$ nix-env -i kubo
คุณยังสามารถติดตั้ง Package ได้โดยใช้ชื่อแอ็ตทริบิวต์ซึ่งก็คือ kubo
แพ็คเกจสำหรับโซลัส
$ sudo eopkg install kubo
คุณยังสามารถติดตั้งผ่านศูนย์ซอฟต์แวร์ Solus
แพ็คเกจชุมชนสำหรับ go-ipfs
แพ็คเกจชุมชนสำหรับ go-ipfs นั้นไม่ล้าสมัย
ไม่รองรับอีกต่อไป ดูเหตุผลใน kubo#8688
หน้าแรกของ PPA บน Launchpad
sudo add-apt-repository ppa:twdragon/ipfs อัปเดต sudo apt sudo apt ติดตั้ง 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 อัปเดต sudo apt ติดตั้ง ipfs-kubo
โดยที่ <
คือชื่อรหัสของการแจกจ่าย Ubuntu ของคุณ (เช่น jammy
สำหรับ 22.04 LTS) ในระหว่างการติดตั้งครั้งแรก สคริปต์การบำรุงรักษาแพ็คเกจอาจถามคุณโดยอัตโนมัติเกี่ยวกับโปรไฟล์เครือข่าย โมเดลบัญชี CPU และ/หรือไฟล์การกำหนดค่าโหนดที่มีอยู่ที่คุณต้องการใช้
หมายเหตุ : วิธีนี้อาจใช้ได้กับ distro ที่ใช้ Debian ที่เข้ากันได้ซึ่งมี libc6
อยู่ข้างใน และ APT เป็นตัวจัดการแพ็คเกจ
ช็อคโกแลต
ตัก
ไม่รองรับอีกต่อไป ดูเหตุผลใน kubo#9341
Scoop ให้คูโบะเป็น kubo
ในที่เก็บข้อมูล 'พิเศษ'
PS>ตักถังเพิ่มความพิเศษ PS> สกู๊ปติดตั้ง kubo
แมคพอร์ต
ห้าม
โฮมบรูว์
ขณะนี้แพ็คเกจ ipfs ชี้ไปที่ kubo (go-ipfs) และอยู่ระหว่างการบำรุงรักษา
$ sudo port install ipfs
ใน macOS คุณสามารถใช้ตัวจัดการแพ็คเกจที่ใช้งานได้จริง Nix:
$ nix-env -i kubo
คุณยังสามารถติดตั้ง Package ได้โดยใช้ชื่อแอ็ตทริบิวต์ซึ่งก็คือ kubo
สูตร Homebrew ipfs ก็ยังคงอยู่เช่นกัน
$ brew install --formula ipfs
ระบบการสร้างของ kubo ต้องใช้ Go และเครื่องมือสร้าง POSIX มาตรฐานบางอย่าง:
กนูทำ
คอมไพล์
GCC (หรือคอมไพเลอร์ C ที่รองรับ Go อื่น ๆ ) (เป็นทางเลือก)
หากต้องการสร้างโดยไม่มี GCC ให้สร้างด้วย CGO_ENABLED=0
(เช่น make build CGO_ENABLED=0
)
หากคุณต้องการอัปเดต: ดาวน์โหลด Go เวอร์ชันล่าสุด
คุณจะต้องเพิ่มไดเร็กทอรี bin ของ Go ให้กับตัวแปรสภาพแวดล้อม $PATH
ของคุณ เช่น โดยการเพิ่มบรรทัดเหล่านี้ใน /etc/profile
ของคุณ (สำหรับการติดตั้งทั่วทั้งระบบ) หรือ $HOME/.profile
:
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:$GOPATH/bin
(หากคุณประสบปัญหา โปรดดูคำแนะนำในการติดตั้ง Go)
$ git clone https://github.com/ipfs/kubo.git $ cd kubo $ make install
หรือคุณสามารถเรียกใช้ make build
เพื่อสร้างไบนารี go-ipfs (เก็บไว้ใน cmd/ipfs/ipfs
) โดยไม่ต้องติดตั้ง
หมายเหตุ: หากคุณได้รับข้อผิดพลาดในบรรทัด "ข้อผิดพลาดร้ายแรง: stdlib.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" แสดงว่าคุณไม่มีคอมไพเลอร์ C รัน make
อีกครั้งด้วย CGO_ENABLED=0
หรือติดตั้ง GCC
การคอมไพล์สำหรับแพลตฟอร์มอื่นนั้นง่ายพอๆ กับการรัน:
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
มีคำแนะนำแยกต่างหากสำหรับการสร้างบน Windows
จำเป็นต้องมี git
เพื่อ go get
การขึ้นต่อกันทั้งหมด
ตัวจัดการแพ็คเกจมักจะมีแพ็คเกจ golang
ที่ล้าสมัย ตรวจสอบให้แน่ใจว่า go version
รายงานอย่างน้อย 1.10 ดูด้านบนสำหรับวิธีการติดตั้ง go
หากคุณสนใจในการพัฒนา โปรดติดตั้งการพึ่งพาการพัฒนาด้วยเช่นกัน
คุณสามารถสร้างคำสั่งเชลล์ให้สมบูรณ์ได้ด้วยคำสั่ง ipfs commands completion
อย่างใดอย่างหนึ่ง อ่าน docs/command-completion.md เพื่อเรียนรู้เพิ่มเติม
ดูโฟลเดอร์เบ็ดเตล็ดสำหรับวิธีเชื่อมต่อ IPFS กับ systemd หรือระบบ init ใดก็ตามที่ distro ของคุณใช้
ในการเริ่มใช้ IPFS คุณต้องเริ่มต้นไฟล์กำหนดค่าของ IPFS บนระบบของคุณก่อน ซึ่งทำได้ด้วย ipfs init
ดู ipfs init --help
สำหรับข้อมูลเกี่ยวกับอาร์กิวเมนต์เสริมที่ใช้ หลังจากการกำหนดค่าเริ่มต้นเสร็จสมบูรณ์ คุณสามารถใช้ ipfs mount
, ipfs add
และคำสั่งอื่นๆ เพื่อสำรวจได้!
หลักฐานพื้นฐานของ 'ipfs ที่ทำงาน' ในเครื่อง:
echo "hello world" > hello ipfs add hello # This should output a hash string that looks something like: # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o ipfs cat
สำหรับการโต้ตอบทางโปรแกรมกับ Kubo โปรดดูรายชื่อไคลเอนต์ HTTP/RPC ของเรา
หากคุณเคยติดตั้ง IPFS มาก่อนและประสบปัญหาในการทำให้เวอร์ชันใหม่ใช้งานได้ ให้ลองลบ (หรือสำรองข้อมูลที่อื่น) ไดเร็กทอรีการกำหนดค่า IPFS ของคุณ (~/.ipfs ตามค่าเริ่มต้น) และรัน ipfs init
อีกครั้ง การดำเนินการนี้จะเตรียมใช้งานไฟล์กำหนดค่าใหม่ให้เป็นค่าเริ่มต้น และล้างที่เก็บข้อมูลในเครื่องของรายการที่ไม่ดี
โปรดส่งคำถามทั่วไปและคำขอความช่วยเหลือไปยังฟอรัมของเรา
หากคุณเชื่อว่าคุณพบจุดบกพร่อง ให้ตรวจสอบรายการปัญหา และหากคุณไม่เห็นปัญหาของคุณที่นั่น โปรดมาพูดคุยกับเราทางแชทของ Matrix หรือแจ้งปัญหาของคุณเอง!
ดู IPFS ในเอกสาร GO
สถานที่บางแห่งที่จะช่วยให้คุณเริ่มต้นใช้งานโค้ดเบส:
ไฟล์หลัก: ./cmd/ipfs/main.go
คำสั่ง CLI: ./core/commands/
Bitswap (เครื่องมือการซื้อขายข้อมูล): go-bitswap
libp2p
libp2p: https://github.com/libp2p/go-libp2p
DHT: https://github.com/libp2p/go-libp2p-kad-dht
IPFS : คำสั่ง Add
ถูกทำให้เข้าใจง่าย
WIP : นี่คือไดอะแกรมสถาปัตยกรรมระดับสูงของระบบย่อยต่างๆ ของการใช้งานเฉพาะนี้ เพื่อรับการอัปเดตว่าพวกเขาโต้ตอบกันอย่างไร ใครมีข้อเสนอแนะสามารถแสดงความคิดเห็นได้ที่นี่ว่าเราจะปรับปรุงสิ่งนี้ได้อย่างไร!
ต้นทาง
คำอธิบาย: จุดหมายถึง "มีแนวโน้มที่จะหายไป" ส่วน "Legacy" เป็นส่วนที่ห่อหุ้มบางคำสั่งเพื่อแปลระหว่างระบบใหม่และระบบเก่า ส่วนที่เป็นสีเทาบนแผนภาพ "daemon" จะแสดงไว้เพื่อแสดงว่าโค้ดเหมือนกันทั้งหมด เพียงแต่เราเปิดบางส่วนและปิดบางส่วน ขึ้นอยู่กับว่าเรากำลังทำงานบนไคลเอ็นต์หรือเซิร์ฟเวอร์
make test
หากคุณทำการเปลี่ยนแปลงบัฟเฟอร์โปรโตคอล คุณจะต้องติดตั้งคอมไพเลอร์ protoc
ค้นหาเอกสารเพิ่มเติมสำหรับนักพัฒนาในเอกสาร
คูโบ้ได้รับการดูแลโดยอู่ต่อเรือ
พื้นที่เก็บข้อมูลนี้เป็นส่วนหนึ่งของการคัดเลือก GO Triage ของอู่ต่อเรือ
กระบวนการเผยแพร่
พวกเรา❤️ผู้มีส่วนร่วมทุกคน โปรเจ็กต์นี้จะไม่เป็นเช่นนั้นหากไม่มีคุณ! หากคุณต้องการช่วยเหลือ โปรดดูที่ CONTRIBUTING.md
พื้นที่เก็บข้อมูลนี้อยู่ภายใต้หลักจรรยาบรรณของ IPFS
สมาชิกของชุมชน IPFS ให้การสนับสนุน Kubo ในหมวดหมู่ฟอรัมสนทนาที่นี่
ต้องการความช่วยเหลือเกี่ยวกับ IPFS หรือไม่? เรียนรู้ว่าจะรับความช่วยเหลือและการสนับสนุนได้ที่ไหนที่ https://ipfs.tech/help
โปรเจ็กต์นี้ได้รับลิขสิทธิ์แบบคู่ภายใต้เงื่อนไข Apache 2.0 และ MIT:
ใบอนุญาต Apache เวอร์ชัน 2.0 (LICENSE-APACHE หรือ http://www.apache.org/licenses/LICENSE-2.0)
ใบอนุญาต MIT (LICENSE-MIT หรือ http://opensource.org/licenses/MIT)