Kubo: GO에서 IPFS 구현
IPFS의 첫 번째 구현.
Kubo는 최초의 IPFS 구현이었으며 오늘날 가장 널리 사용되는 것입니다. Interplanetary Filesystem 구현 - 콘텐츠 주소 지정을 위한 Web3 표준이며 HTTP와 상호 운용 가능합니다. 따라서 IPLD의 데이터 모델과 네트워크 통신을 위한 libp2p로 구동됩니다. Kubo는 Go로 작성되었습니다.
기능 세트
LAN 및 WAN DHT의 일부인 네트워크 서비스로 IPFS 노드를 실행합니다.
신뢰할 수 있고 신뢰할 수 없는 콘텐츠 검색을 위한 HTTP 게이트웨이( /ipfs
및 /ipns
) 기능
위임된 라우팅 조회를 위한 HTTP 라우팅 V1( /routing/v1
) 클라이언트 및 서버 구현
데몬에 액세스하고 제어하기 위한 HTTP Kubo RPC API( /api/v0
)
( /api/v0
) RPC API 기반 명령줄 인터페이스
Kubo 노드를 관리하기 위한 WebUI
공개 노드 운영자를 위한 콘텐츠 차단 지원
목록 보기
IPFS는 버전이 지정된 글로벌 P2P 파일 시스템입니다. Git, BitTorrent, Kademlia, SFS 및 웹과 같은 이전 시스템의 좋은 아이디어를 결합합니다. 이는 Git 개체를 교환하는 단일 BitTorrent 떼와 같습니다. IPFS는 HTTP 웹만큼 단순하지만 내구성이 내장된 인터페이스를 제공합니다. /ipfs에 월드를 마운트할 수도 있습니다.
자세한 내용은 https://docs.ipfs.tech/concepts/what-is-ipfs/를 참조하세요.
이슈를 열기 전에 다음 위치 중 하나를 사용하여 올바른 위치에서 스레드를 열고 있는지 확인하는 것이 좋습니다.
이 저장소의 kubo(이전 이름은 go-ipfs) 구현 버그입니다.
ipfs/docs 문제의 문서 문제.
ipfs/specs 문제의 IPFS 설계 .
ipfs/notes 문제에 대한 새로운 아이디어 탐색.
IPFS 포럼에서 질문을 하고 나머지 커뮤니티를 만나보세요.
아니면 우리와 채팅하세요.
GitHub의 마일스톤
쿠보란?
IPFS란 무엇입니까?
다음 이정표
목차
보안 문제
최소 시스템 요구 사항
설치하다
Go 설치
IPFS 다운로드 및 컴파일
문제 해결
크로스 컴파일
MacPort
아니야
홈브류
초콜릿 같은
국자
아치리눅스
젠투 리눅스
아니야
혼자서
오픈수세
구익스
스냅
우분투 PPA
업데이트 중
ipfs 업데이트 사용
IPFS를 사용하여 빌드 다운로드
도커
공식 사전 구축 바이너리
비공식 Linux 패키지
비공식 Windows 패키지
비공식 MacOS 패키지
소스에서 빌드
시작하기
용법
시도해 볼 사항
문제 해결
패키지
개발
구현된 하위 시스템 지도
CLI, HTTP-API, 아키텍처 다이어그램
테스트
개발 종속성
개발자 노트
유지관리자 정보
기여
특허
SECURITY.md
따르세요.
IPFS는 대부분의 Linux, macOS 및 Windows 시스템에서 실행될 수 있습니다. 최소 4GB의 RAM과 2개의 CPU 코어가 있는 머신에서 실행하는 것이 좋습니다(kubo는 병렬성이 높음). 메모리가 적은 시스템에서는 완전히 안정적이지 않을 수 있으며 위험은 사용자 본인이 감수해야 합니다.
IPFS에 대한 정식 다운로드 지침은 https://docs.ipfs.tech/install/에 있습니다. IPFS 개발 작업에 관심이 없다면 해당 지침을 따르는 것이 좋습니다 .
공식 이미지는 https://hub.docker.com/r/ipfs/kubo/에 게시되어 있습니다.
? 릴리스
latest
및 release
태그는 항상 최신 안정 릴리스를 가리킵니다.
vN.NN
특정 릴리스 태그를 가리킵니다.
프로덕션 등급 이미지입니다.
? 실험적인 개발자 빌드도 제공합니다.
master-latest
항상 master
브랜치의 HEAD
가리킵니다.
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 릴리스 페이지
dweb.link 게이트웨이의 /ipns/dist.ipfs.tech
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 get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # darwin 32비트 빌드$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $VERSION_darwin-amd64.tar.gz # darwin 64비트 빌드$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd 64비트 빌드$ ipfs get / ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-386.tar.gz # Linux 32비트 빌드$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64 .tar.gz # 리눅스 64비트 빌드$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-arm.tar.gz # 리눅스 arm build$ ipfs get /ipns/dist.ipfs. tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # Windows 64비트 빌드
아치리눅스
젠투 리눅스
아니야
혼자서
오픈수세
구익스
스냅
우분투 PPA
# 팩맨 -S 쿠보
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
kubo
속성 이름을 사용하여 패키지를 설치할 수도 있습니다.
솔루스용 패키지
$ sudo eopkg install kubo
Solus 소프트웨어 센터를 통해서도 설치할 수 있습니다.
go-ipfs용 커뮤니티 패키지
go-ipfs용 커뮤니티 패키지는 최신 버전이 아닙니다.
더 이상 지원되지 않습니다. kubo#8688의 근거를 참조하세요.
Launchpad의 PPA 홈페이지.
sudo add-apt-repository ppa:twdragon/ipfs sudo 적절한 업데이트 sudo apt 설치 ipfs-kubo
sudo suecho 'deb https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <> 메인' >> /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 배포판의 코드명입니다(예: 22.04 LTS의 경우 jammy
). 처음 설치하는 동안 패키지 유지 관리 스크립트는 사용하려는 네트워킹 프로필, CPU 계정 모델 및/또는 기존 노드 구성 파일에 대해 자동으로 물을 수 있습니다.
참고 : 이 방법은 내부에 libc6
있고 APT가 패키지 관리자인 호환되는 Debian 기반 배포판에서도 작동할 수 있습니다.
초콜릿 같은
국자
더 이상 지원되지 않습니다. kubo#9341의 근거를 참조하세요.
Scoop은 'extras' 버킷에 kubo를 kubo
로 제공합니다.
PS> 스쿠프 버킷 추가 추가 PS> 특종 설치 쿠보
MacPort
아니야
홈브류
ipfs 패키지는 현재 kubo(go-ipfs)를 가리키며 유지 관리되고 있습니다.
$ sudo port install ipfs
macOS에서는 순수 기능 패키지 관리자 Nix를 사용할 수 있습니다.
$ nix-env -i kubo
kubo
속성 이름을 사용하여 패키지를 설치할 수도 있습니다.
Homebrew 공식 ipfs도 유지됩니다.
$ brew install --formula ipfs
kubo의 빌드 시스템에는 Go 및 일부 표준 POSIX 빌드 도구가 필요합니다.
GNU 만들기
힘내
GCC(또는 다른 호환 가능한 C 컴파일러)(선택 사항)
GCC 없이 빌드하려면 CGO_ENABLED=0
으로 빌드하세요(예: make build CGO_ENABLED=0
).
업데이트가 필요한 경우: 최신 버전의 Go를 다운로드하세요.
$PATH
환경 변수에 Go의 bin 디렉터리를 추가해야 합니다. 예를 들어 /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 컴파일러가 누락된 것입니다. CGO_ENABLED=0
으로 make
다시 실행하거나 GCC를 설치하십시오.
다른 플랫폼용으로 컴파일하는 것은 다음을 실행하는 것만큼 간단합니다.
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
Windows에서 빌드하는 경우 별도의 지침을 사용할 수 있습니다.
go get
이 모든 종속성을 가져오려면 git
이 필요합니다.
패키지 관리자에는 오래된 golang
패키지가 포함되어 있는 경우가 많습니다. go version
1.10 이상을 보고하는지 확인하세요. go 설치 방법은 위를 참조하세요.
개발에 관심이 있으시면 개발 종속성도 설치해 주세요.
ipfs commands completion
하위 명령 중 하나를 사용하여 쉘 명령 완성을 생성할 수 있습니다. 자세한 내용은 docs/command-completion.md를 읽어보세요.
IPFS를 systemd 또는 배포판에서 사용하는 초기화 시스템에 연결하는 방법은 기타 폴더를 참조하세요.
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 채팅을 통해 우리에게 이야기하거나 직접 문제를 제출하십시오!
GO 문서의 IPFS를 참조하세요.
코드베이스를 시작할 수 있는 몇 가지 장소는 다음과 같습니다.
메인 파일: ./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 : 이는 이 특정 구현의 다양한 하위 시스템에 대한 상위 수준 아키텍처 다이어그램입니다. 상호 작용 방식이 업데이트됩니다. 제안 사항이 있는 사람은 누구나 이 문제를 개선할 수 있는 방법에 대해 여기에 의견을 제시할 수 있습니다!
기원
설명: 점선은 "아마도 사라질 것 같다"는 뜻입니다. "레거시" 부분은 새 시스템과 이전 시스템 간을 변환하기 위해 일부 명령을 둘러싼 얇은 래퍼입니다. "데몬" 다이어그램에서 회색으로 표시된 부분은 코드가 모두 동일하다는 것을 보여주기 위한 것입니다. 단지 클라이언트에서 실행하는지 서버에서 실행하는지에 따라 일부 부분을 켜고 일부를 끄는 것뿐입니다.
make test
프로토콜 버퍼를 변경하는 경우 protoc 컴파일러를 설치해야 합니다.
문서에서 개발자를 위한 추가 문서 찾기
Kubo는 조선소에서 관리합니다.
이 저장소는 Shipyard의 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)