AWS, Docker/IPFS

go-ipfs 시작하기 <2.private network>

zooyeonii 2020. 11. 27. 16:14

1. ipfs swarm key 생성 (host 1 에서만 실행합니다)

swarm key는 private network 를 구성할 peer들 사이에 공유되어야 하는 private key 를 의미합니다. 똑같은 swarm key를 가짐으로써 팀을 이루게 되는거죠!

그래서 한 개의 host만 이 swarm key를 생성하면 됩니다. 

#swarm-key-gen 다운로드
$ 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
#Swarm key 생성함
$ ./main > ~/.ipfs/swarm.key
$ cat ~/.ipfs/swarm.key

cat 명령어를 통해 swarm.key를 확인할 수 있습니다. 이 때 출력된 swarm key를 꼭 복사해놓습니다! 나중에 host2,3,4~~ 에 복사해야 하니까요! 

2. Swarm key 복사 (host2 에서만 실행합니다)

host1 의 swarm key를 복사하여 붙입니다. 동일한 swarm key를 가지고 있어야 private network를 만들기 때문이죠..

#swarm key 복사
$ vi ~/.ipfs/swarm.key

1번에서 복사해놓았던 swarm key를 ctrl+v 합니다.  (esc + :wq 해서 저장하고 나가기~)

3. IPFS Daemon 재실행 (host1과 host2 모두)

# ipfs 재실행 (변경사항이 있을 때 다시 실행해줍니다.)
$ ipfs shutdown
$ ipfs daemon > ipfs.log &

4. 현재 연결된 peer 삭제하기 (host1과 host2 모두)

#연결된 peer 확인 
$ ipfs bootstrap list
# 현재 public network에 연결되어 있는 피어들의 목록이므로 삭제하기
$ ipfs bootstrap rm --all

5. config 파일 수정하기 (host1과 host2 모두) 

1) IPFS 구성 파일 확인
$ ipfs config show

0.0.0.0 대신 해당 인스턴스의 ipv4 주소 넣어주기

2) config 파일 수정
$ ipfs config Addresses.API /ip4/<ipv4주소 넣어줍니다>/tcp/5001
$ ipfs config Addresses.Gateway /ip4/<위와 동일 주소>/tcp/8080

Lipp2p는 개인 네트워크와 같은 연결 보호를 지원한다. 환경변수 LIBP2P_FORCE_PNET=1 을 설정하여 네트워크 보호를 강화한다. 

3) 환경변수 설정
$ export LIBP2P_FORCE_PNET=1

ipfs daemon 실행 중인 것을 중지하고 다시 시작한다. 

4) IPFS 재부팅
$ ipfs shutdown
$ ipfs daemon > ipfs.log &

6. Peer 연결하기 (HOST1 에서 실행)

1) IP 주소 확인
$ ifconfig

이 주소를 기억하세용

2) ID 확인
$ ipfs id

Addresses 중 'ifconfig'에서 출력된 HOST1의 IP주소값이 포함된 Address를 복사한다. 

 

7. IPFS에 bootstrap peer 추가 (HOST2 에서 실행)

IPFS bootstrap peer list 에 HOST1을 추가한다. 

$ ipfs bootstrap add /ip4/<HOST1의 IP주소>/tcp/4001/ipfs/<HOST1의 id>

Peer 연결 확인 (HOST1, HOST2)

HOST 1 에서 HOST2 주소 확인함
HOST 2 에서 HOST1 주소 확인함

8. 파일 공유하기 (HOST 1)

test.txt 파일 업로드하기
$echo "test file" > test.txt
$cat test.txt
파일 추가하기
$ipfs add test.txt

파일의 id 복사해두기

9. 파일 확인하기 (HOST 2)

파일 확인
$ipfs cat <ipfs file id>

HOST 2 에서 파일 확인 가능함
외부 접근시 파일 확인할 수 없음.

 

'AWS, Docker > IPFS' 카테고리의 다른 글

[IPFS] IPFS가 무엇일까  (1) 2021.05.28
go-ipfs 시작하기 <1.go-ipfs 설치>  (1) 2020.06.28