LoginSignup
8
6

More than 5 years have passed since last update.

テスト環境用にクローズドなIPFSノードを立ち上げる方法

Last updated at Posted at 2018-04-20

DApps開発において、データやファイルをどこに格納するのかは常に課題になると思いますが、
現段階でその課題を解決してくれそうな一番の有力候補はIPFSでしょう。

そこで今回はIPFSを使うために、テスト環境用にクローズドなIPFSノードを立ち上げる方法を試してみようと思います。

1. go-ipfsのダウンロード

下記サイトよりgo-ipfsをダウンロードし、任意の場所に格納します。
https://dist.ipfs.io/#go-ipfs

2. インストール

下記のinstall手順に沿って、コマンドを実行し、ipfsをインストールします。

tar xvfz go-ipfs.tar.gz
cd go-ipfs
./install.sh
# Moved ./ipfs to /usr/local/bin

ipfs helpとコマンドを打って、helpが表示されていれば無事ダウンロード完了です。

3. 起動(パブリック)

下記コマンドを実行すると、IPFSノードがパブリックな状態で起動します。

ipfs daemon
# Initializing daemon...
# Successfully raised file descriptor limit to 2048.
# Swarm not listening, running in offline mode.
# API server listening on /ip4/127.0.0.1/tcp/5001
# Gateway (readonly) server listening on /ip4/0.0.0.0/tcp/9001
# Daemon is ready

問題なく起動できていれば、下記コマンドで自分が立ち上げたノードと接続されたpeerを確認できます。

ipfs swarm peers

問題なくパブリックなネットワークに接続できているか確認するため、下記のコマンドで猫の画像を取得してみます。

ipfs cat /ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ/cat.jpg >cat.jpg
open cat.jpg

猫の画像が見えれば、ノードの起動は成功です。

cat.jpg

4.起動(クローズド)

ctrl + cで起動させたノードを停止し、下記コマンドでIPFSノードをクローズドな状態で起動します。

ipfs daemon --offline
# Initializing daemon...
# Successfully raised file descriptor limit to 2048.
# Swarm not listening, running in offline mode.
# API server listening on /ip4/127.0.0.1/tcp/5001
# Gateway (readonly) server listening on /ip4/0.0.0.0/tcp/9001
# Daemon is ready

問題なく起動できていれば、下記コマンドでエラーになります。

ipfs swarm peers
# Error: This command must be run in online mode. Try running 'ipfs daemon' first.

5.ファイルのアップロード

クローズドなIPFSノードにファイルをアップロードします。

ipfs add sample.png 
# added Qmxxxxxxxxxxxxxxxxxxxxxxxxxxx sample.png

ハッシュ値が返ってくるので、その値をもとにIPFS自身が運営するGatewayと自分で立ち上げたノードとにアクセスしてみます。

自分で立ち上げたノードでのみ画像が表示されていると思います。
ファイルをアップロードした後に、IPFSノードをパブリックな状態で起動し直してしまうと、他のパブリックなノードからアクセスできてしまうので要注意です。

6.設定変更

ポートを変更したい場合は、下記コマンドで変更できます。

ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/9001
ipfs config Addresses.API /ip4/0.0.0.0/tcp/3001

異なるドメインからIPFSのAPIを呼ぶ場合は、下記コマンドでHTTPHeadersの設定を変更しておく必要があります。

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["GET", "POST"]'

<参考>
https://ipfs.io/docs/
https://groups.google.com/forum/#!topic/ipfs-users/5oEfULoGpt4

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6