👀

IPFS環境構築

2021/11/19に公開約2,800字

IPFS環境構築

IPFSネットワークに接続するノードを構築します。

インストール

  • Ubuntu

以下コマンドでインストールします。

# install dependencies
$ sudo apt-get update -y
$ sudo apt-get upgrade -y

# install ipfs
$ wget https://dist.ipfs.io/go-ipfs/v0.10.0/go-ipfs_v0.10.0_linux-amd64.tar.gz
$ tar -xvzf go-ipfs_v0.10.0_linux-amd64.tar.gz
$ cd go-ipfs
$ sudo bash install.sh

最後にinitプロセスを実行します。これはホームディレクトリで実行してください。

$ ipfs init
  • mac

デスクトップアプリがあるのでそれでやると楽です。

https://github.com/ipfs/ipfs-desktop/releases

起動

コマンド一つで起動できます。

$ ipfs daemon

systemdで自動起動設定

せっかくなので自動起動まで設定しましょう。

以下の手順で設定ファイルを作成します。

$ sudo cat <<EOF > /etc/systemd/system/ipfs.service
[Unit]
Description=IPFS daemon
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/
ExecStart=/usr/local/bin/ipfs daemon
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

ファイルの作成が済んだらsystemdをリロードしIPFSを有効化します。

$ sudo systemctl daemon-reload
$ sudo systemctl enable ipfs
$ sudo systemctl start ipfs

ポート

IPFSでは以下のポートを用途に応じて使用します。他ノードとの通信に用いるので4001番ポートは開放必須です。

ポート番号 用途
4001 他ノードとの通信に利用
5001 APIサーバーとして動作する際に利用
8080 ゲートウェイとして動作する際に利用

おまけ:ちょっと使ってみる

GUIを表示

localhost:5001/webui に接続するとGUIコンソールが表示されます。

ファイル操作

ファイルに関する操作

  • 追加

    <filepath>にあるファイルをIPFSに追加します。CIDが返ってきます。

    $ ipfs add <filepath>
    
  • 閲覧

    見るだけならcatです。<ipfs-path> はCIDでOKです。

    $ ipfs cat <ipfs-path>
    
  • 取得

    ダウンロードするならgetです。

    $ ipfs get <ipfs-path>
    

ピン操作

ピンに関する操作

  • 追加

    消えないように自ノードでピンします。

    $ ipfs pin add <ipfs-path>
    
  • 一覧

    ピンしたファイルの一覧を取得します。

    $ ipfs pin ls
    
  • 除外

    ピンを外します。

    $ ipfs pin rm <ipfs-path>
    

自身の情報を表示

$ ipfs id

接続しているピアを取得

自身が接続しているピアの一覧を取得します。

$ ipfs swarm peers

認識しているピアを取得

自身が認識している (aware of) ピアの一覧を取得します。

接続≠認識

$ ipfs swarm addrs

任意のピアと接続

自身の属する群衆に任意ピアを接続します。

IPFSの再起動により接続が解除される可能性があります。

$ ipfs swarm connect <address>

<address> は /ip4/<IPアドレス>/tcp/4001/p2p/<ピアID> の形で表現されます。

peering subsystem

  • 任意のピアを登録

    peering subsystemを用いて接続します。

    $ ipfs swarm peering add <address>
    

    configで設定する場合は以下です。

    ...
      "Peering": {
        "Peers": [
          {
    	"ID": "<ピアID>",
    	"Addrs": ["/ip4/<IPアドレス>/tcp/4001"]
          }
        ]
      },
    ...
    

    参考:

https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#peering
  • 登録されたピアの一覧を取得

    $ ipfs swarm peering ls
    

コンテンツ共有を確認

指定コンテンツがどのピアに共有されているかを確認します。

$ ipfs dht findprovs <CID>

例えばreadmeファイルなどを検索すると多くのピアがヒットするでしょう。

GitHubで編集を提案

Discussion

ログインするとコメントできます