티스토리 뷰

블록체인

IPFS 실습

LHOIKTN 2022. 4. 2. 02:58

NODE_1 빨간색

NODE_2 파란색 

NODE 보라색으로 표시된 것은 NODE_1NODE_2에서 모두 진행

 

 

1. aws에서 EC2인스턴스 생성.

아래 포트를 열어준다. 

IPFS

4001 - 다른 노드와 통신

5001 - API서버

8080 - 게이트웨이 서버

IPFS-CLUSTER

9094 - HTTP API 엔드포인트

9095 - IPFS 프록시 엔드포인트

9096 - Cluster swarm . 클러스트 노드간 통신

 

 

 

2. go 설치

https://golang.org/dl/ 접속하여 최신 버전을 확인 후 아래 변수 값을 바꿔준다. 

#최신버전 확인
GO_VERSION=1.17    

curl -LO https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz

rm -rf /usr/local/go

sudo tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz

rm go${GO_VERSION}.linux-amd64.tar.gz

cat ~/.profile | grep /usr/local/go/bin || echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile

cat ~/.profile | grep GOPATH= || echo 'export GOPATH=$(go env GOPATH)' >> ~/.profile

cat ~/.profile | grep GOPATH/bin || echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.profile

source ~/.profile

echo $GOPATH

go version

 

3. ipfs 설치

https://dist.ipfs.io/#go-ipfs 에서 최신 버전을 확인 후 아래 변수 값을 바꿔준다. 

IPFS_VERSION=0.12.1

curl -LO https://dist.ipfs.io/go-ipfs/v${IPFS_VERSION}/go-ipfs_v${IPFS_VERSION}_linux-amd64.tar.gz 

tar xvfz go-ipfs_v${IPFS_VERSION}_linux-amd64.tar.gz 

rm go-ipfs_v${IPFS_VERSION}_linux-amd64.tar.gz

sudo ./go-ipfs/install.sh

ipfs version

mkdir -p /home/${USER}/ipfs/data

echo 'export IPFS_PATH=/home/${USER}/ipfs/data' >> ~/.profile

source ~/.profile

ipfs init

ipfs init  오류떠도 신경 안 써도 됨

 

4. Swarm key 생성 

(NODE_1에서 생성하고  나머지 NODE는 이 swarm.key를  복붙해서 사용)

git clone https://github.com/Kubuxu/go-ipfs-swarm-key-gen.git

cd go-ipfs-swarm-key-gen

go build ipfs-swarm-key-gen/main.go

./main > ~/ipfs/data/swarm.key

cat ~/ipfs/data/swarm.key

 

5. swarm key 복붙

나머지 노드에 위에서 만든 swarm.key의 내용을 복붙.

cd ~/ipfs/data

vi swarm.key

복붙^^

cat swarm.key

 

 

6. IPFS 노드 부트스트랩 초기화

NODE_1NODE_2에서 bootstrap list 초기화

ipfs bootstrap rm --all

ipfs bootstrap list

 

네트워크를 Private 모드로 강제 설정

export LIBP2P_FORCE_PNET=1

 

 

7. IP주소 및 IPFS ID 확인

 

IP주소는

ip addr

 

NODE_1의 IP주소

 

 

 

peer ID는

ipfs id

 

NODE_1의 IPFS ID

 

 

8.부트스트랩 피어 추가

이제 아래 형식으로 bootstrap 추가

ipfs bootstrap add /ip4/[NODE_IP_ADDRESS]/tcp/4001/ipfs/[NODE_PEER_ID]

 

NODE_2에서 NODE_1의 정보로 추가. 

 

ipfs bootstrap add /ip4/<NODE_1의 IP주소>/tcp/4001/ipfs/<NODE_1의 IPFS ID>

ipfs bootstrap list

 

 

 

 

9. 통신을 위한 IPFS config  

cd ~/ipfs/data

vi config

"Addresses"를 찾아서 기본적으로 127.0.0.1이므로 노드가 서로 바라볼 수 있도록 하려면 각 노드의 IP에 따라 이 매개변수를 설정해야함. 

게이트웨이 매개변수는 브라우저에 엑세스하기 위함. 

각 노드에서 자기 자신의 IP주소로 바꾼다. 

 

10. daemon 백그라운드 실행

ipfs daemon &

 

 

peer 추가 확인 

ipfs swarm peers

 

11. NODE_1 에서 파일  add

cd ~

vi hello.txt

HELLO IPFS :)  MY NAME IS ehdcjf

wq!

ipfs add hello.txt

 

12. node_2에서 파일 get

ipfs get QmTzA1SUffo2irYJuPsE2Litj9LzmgryKbRRLNRPukJu8t --output=hello.txt

cat hello.txt

 

내일은 

 

IPFS 백그라운드 실행

 

IPFS Cluster 

 

참고
https://miiingo.tistory.com/205

 

[IPFS] go-ipfs: 로컬 환경에서 IPFS Private 네트워크 실행

go-ipfs: 로컬 환경에서 IPFS Private 네트워크 실행 go-ipfs 를 이용해 로컬 환경에서 IPFS Private 네트워크를 실행하는 방법에 대해 알아보겠습니다. 네트워크 환경 준비 두 대의 호스트( HOST1 , HOST2 )를

miiingo.tistory.com

https://labs.eleks.com/2019/03/ipfs-network-data-replication.html

 

Building Private IPFS Network with IPFS-Cluster for Data Replication

In this IPFS tutorial, we will go through the process of creating a private IPFS network and setting up an IPFS-Cluster for data replication.

labs.eleks.com

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함