본문 바로가기

기타

IPFS Tutorial: IPFS(InterPlanetary File System) 설치하기

 

 

 

 

 

IPFS 란

IPFS는 모든 컴퓨터를 연결하고자 하는 분산된 P2P 파일 시스템입니다. InterPlanetary 라는 표현이 사용된 이유는 지구 상의 컴퓨터 뿐만 아니라 다른 행성의 컴퓨터들까지 모두 연결하겠다는 IPFS 팀의 비전이 담겨 있습니다.

IPFS Web 는 기존의 HTTP Web 의 문제점을 해결하고 보완한 새로운 Web 입니다. IPFS 가 어떻게 기술적으로 구현되었는 지 알아보기 전에, IPFS 가 어떤 특징을 갖고 있는지 알아보겠습니다.

IPFS 의 특징

중앙화된 서버 없이 노드들의 ,P2P 통신으로 실현한 더 빠르고 안전하고 열린 네트워크 입니다. 대형 서버의 연결이 차단되면 치명적인 결과를 낳는 과거 HTTP Web 과는 달리, IPFS 에서는 몇몇 노드들이 연결이 끊어지더라도 생태계가 안정적으로 유지됩니다.

고용량의 파일을 빠르고 효율적이게 전달할 수 있으며(BitSwap), 파일들의 중복을 알 수 있기 때문에 저장소도 효율적으로 사용할 수 있습니다.(Merkle DAG, contents-addressed)

IPFS 상에 업로드된 파일의 이름은 영원히 기록되며, 만약 IPFS 상에서 지키고 싶은 파일은 원하는 만큼 지켜낼 수 있습니다(pinning). 또한 파일의 버전 관리(Git)가 가능합니다.

주류 인터넷에 원활하게 접속할 수 없는 상황이더라도 IPFS의 생태계는 유지됩니다.

How IPFS works?

  • 각각의 파일은 여러 개의 블록으로 이루어져 있으며, 각각의 블록은 해시로 표현된 고유의 이름이 있습니다.
  • IPFS는 모든 파일의 이름을 데이터베이스 속에 저장하며, 동일 파일의 중복을 배제하며, 각 파일의 버전 정보를 트래킹합니다.
  • 각 노드는 본인이 관심있는 파일만 저장소에 보관하며, 인덱싱 정보를 통해 누가 어떤 파일을 저장하고 있는지 알 수 있습니다.
  • 네트워크에서 파일을 찾기 위해서는, 파일명을 조회하고 해당 파일을 갖고 있는 노드를 물어보면 됩니다.
  • IPNS를 통해 모든 파일명은 인간이 읽기 쉬운 형태(DNS와 유사한 개념)로 변환할 수 있습니다.

IPFS 사용해보기

기본 환경

Host
  VMware® Workstation 14 Player 14.0.0 build-6661328
OS

  Ubuntu 16.04.6 LTS
Application 
  - Docker : 19.03.5, build 633a0ea838
  - docker-compose : 1.11.2, build dfed245
  - git : 2.7.4

IPFS 다운로드

go-ipfs는 IPFS의 주요 구현입니다 :

- IPFS 핵심 구현

- IPFS 데몬 서버

- 포괄적 인 명령 줄 도구

- 노드를 제어하기위한 HTTP API

- HTTP 브라우저에 컨텐츠를 제공하는 HTTP 게이트웨이

go-ipfs 다운로드 후 파일 압축을 푼 후 해당 폴더로 이동합니다.

 

wget https://dist.ipfs.io/go-ipfs/v0.4.17/go-ipfs_v0.4.17_linux-amd64.tar.gz

tar zxvf go-ipfs_v0.4.17_linux-amd64.tar.gz
cd go-ipfs

 

 

IPFS 설치하기

/usr/local/bin, /usr/bin 디렉토리 중 하나에 ./ipfs 를 설치해야 하기 때문에 쓰기 권한이 있어야 합니다.

 

sudo ./install.sh

 

 

설치 후 확인합니다.

ipfs version

 

저장소 초기화(Initialize the repository)

ipfs는 모든 설정과 내부 데이터를 저장소라는 디렉토리에 저장합니다. IPFS를 처음 사용하기 전에 ipfs init 명령을 사용하여 저장소를 초기화해야합니다.

 

ipfs init

 

 

이제 ipfs init의 출력에서 제안 된 명령을 실행 해보십시오. ipfs cat/ipfs/<HASH>/readme 와 같은 파일입니다.

 

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

 

 

거기에있는 다른 개체를 탐색 할 수 있습니다. 특히 빠른 시작을 확인하십시오.

 

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/quick-start

 

흥미로운 몇 가지 예를 통해 여러분을 안내 할 것입니다.

 

# 0.1 - Quick Start

This is a set of short examples with minimal explanation. It is meant as
a "quick start".


Add a file to ipfs:

  echo "hello world" >hello
  ipfs add hello


View it:

  ipfs cat <the-hash-you-got-here>


Try a directory:

  mkdir foo
  mkdir foo/bar
  echo "baz" > foo/baz
  echo "baz" > foo/bar/baz
  ipfs add -r foo


View things:

  ipfs ls <the-hash-here>
  ipfs ls <the-hash-here>/bar
  ipfs cat <the-hash-here>/baz
  ipfs cat <the-hash-here>/bar/baz
  ipfs cat <the-hash-here>/bar
  ipfs ls <the-hash-here>/baz


References:

  ipfs refs <the-hash-here>
  ipfs refs -r <the-hash-here>
  ipfs refs --help


Get:

  ipfs get <the-hash-here> -o foo2
  diff foo foo2


Objects:

  ipfs object get <the-hash-here>
  ipfs object get <the-hash-here>/foo2
  ipfs object --help


Pin + GC:

  ipfs pin add <the-hash-here>
  ipfs repo gc
  ipfs ls <the-hash-here>
  ipfs pin rm <the-hash-here>
  ipfs repo gc


Daemon:

  ipfs daemon  (in another terminal)
  ipfs id


Network:

  (must be online)
  ipfs swarm peers
  ipfs id
  ipfs cat <hash-of-remote-object>


Mount:

  (warning: fuse is finicky!)
  ipfs mount
  cd /ipfs/<the-hash-here>
  ls


Tool:

  ipfs version
  ipfs update
  ipfs commands
  ipfs config --help
  open http://localhost:5001/webui


Browse:

  webui:

    http://localhost:5001/webui

  video:

    http://localhost:8080/ipfs/QmVc6zuAneKJzicnJpfrqCH9gSy6bz54JhcypfJYhGUFQu/play#/ipfs/QmTKZgRNwDNZwHtJSjCp6r5FYefzpULfy37JvMt9DwvXse

  images:

    http://localhost:8080/ipfs/QmZpc3HvfjEXvLWGQPWbHk3AjD5j8NEN4gmFN8Jmrd5g83/cs

  markdown renderer app:

    http://localhost:8080/ipfs/QmX7M9CiYXjVeFnkfVGf3y5ixTZ2ACeSGyL1vBJY1HvQPp/mdown

IPFS 데몬실행(온라인 접속)

온라인으로 가져갈 무언가가 준비가 되면 다른 터미널에서 데몬을 실행하십시오.

 

ipfs daemon

 

 

데몬을 실행한 후 브라우저를 이용해 웹 콘솔을 이용할 수 있습니다.

http://localhost:5001/webui

 

파일 업로드

간단한 HTML 파일을 작성해 IPFS 에 업로드해보겠습니다.

 

<!-- first.html -->
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>IPFS HTML</title>
</head>
<body>
  <h2>Distributed Web Page</h2>
</body>
</html>

 

ipfs add first.html

 

 

참고사이트

https://medium.com/onther-tech/managing-ipfs-hash-with-smart-contract-bb8db43fa18f

https://docs.ipfs.io/introduction/install/

 

 

 

 

 

 

'기타' 카테고리의 다른 글

GitLab CE 설치하기  (0) 2019.12.12
Docker Local Registry 구축  (0) 2019.12.11
Waspmote ZigBee Networking Guide  (0) 2018.05.28
Waspmote Quickstart Guide 번역  (0) 2018.05.28
Waspmote PRO v1.2 번역 및 실습  (0) 2018.05.28