見出し画像

数GB以上の画像ファイルをIPFSに上げる方法(Local IPFS Node 使用)

ジェネレーティブNFTプロジェクトを立ち上げる場合、数千枚の画像ファイルを利用するため、たびたびファイルサイズが数GB~数十GBになります。この場合、通常の方法でIPFSにアップロードするとほとんど何らかの理由で失敗します。

非常に大きな容量のファイルをアップロードするのに一番良い方法は、まず自分自身でIPFSのサーバーをローカルに立ち上げ、そしてLocalでアップロードしたファイルを外部のIPFSサービス (pinata, NFT Storage) に同期することです。もちろん、自作IPFSサーバーだけでも運用は出来るのですが、サーバー管理の経験をしっかり積んでいない人の場合、外部IPFSサービスも同時に利用することをオススメします。

前提条件

このガイドに記載されている手順は、いわゆる "コマンドライン "で実行する必要があります。そのため、ある程度コマンドラインをいじることが必要です。

今回のガイドではAmazon EC2 ( https://aws.amazon.com/jp/ec2/ ) を利用してLinuxサーバーを立ち上げました。他のサーバーを利用しても問題ありません。

EC2のサーバーの立ち上げ方を学びたい人は、有益なガイド (https://zenn.dev/tomoshimizu/articles/eedb6856df9c90) がありますのでこちらを見てください。

また、サーバーを作るときにこちらの3つのポートは開放してください。IPFSにて利用します。

4001 - 他ノード間通信
5001 - APIサーバー
8080 - ゲートウェイサーバー

IPFSのインストール

サーバーを立ち上げてコマンドラインアプリケーションを開いたら、まず最初に、ここにある ipfs 公式配布ページにアクセスする必要があります: https://docs.ipfs.io/install/command-line/#official-distributions このページで、Linuxまでスクロールし、IPFSをインストールする方法についての指示に従いながらインストールを進めてください。

IPFSの実行

IPFSのインストールが行われたら、次は ipfs daemon と入力してください。これによりIPFSの起動が行われ、下記のような画面が表示されます。

ここまで表示されればOKです。また、WebUIを利用すると、ローカルIPFSサーバーをWebページ上で表示されます。色々な画面が表示されて面白いです。

IPFSにコンテンツを追加する

IPFSが起動したら、次はローカルで動作しているIPFSノードにフォルダを追加することになります。これを行うには、コマンドライン・アプリケーションの新しいタブまたはウィンドウを開く必要があります。ipfs  daemon は元のコマンドライン・ウィンドウで実行したままにする必要があるため、今後のコマンドは新しいウィンドウで実行する必要があります。

まず、新しいターミナルウィンドウで、ローカルファイルシステム内のフォルダーが保存されている場所に移動します。

これは、cdコマンドを利用して行います。
コンピュータ上のフォルダの場所に移動するには、次のように入力します。

cd ./exampleFolder/

現在位置するフォルダの内容を一覧表示するには、次のように入力します。

ls

アップロード先のフォルダは、NFTとして利用する画像ファイルが入っているフォルダになります。たとえば、フォルダ名が exampleFolder の場合、exampleFolderの親フォルダにいるかどうか、確認してください。これを確認するために、lsコマンドを実行すると、結果にexampleFolderが表示されるはずです。

目的の場所に移動したら、コマンドラインに次のコマンドを入力します。

ipfs add --recursive --progress ./exampleFolder/ 

ここから、あなたのフォルダがIPFSに追加され始めるはずです。比較的大きなフォルダの場合、この作業に時間がかかることがありますが、数十GBでも数分で完了します。追加されるものがなくなり、アップロードが100%になると、終了したことがわかります。このようなものが送られてくるはずです。

一番下のCIDに注目してください。その横にexampleFolderという名前がついています。これが今回利用するCIDです。CIDとは、IPFSで利用するファイルもしくはフォルダのIDであり、IPFSのすべてのファイルの中で一意の値が割り振られます

外部IPFSストレージに画像データを取得させる。

ここまででもIPFSとしては運用可能ですが、サーバーおよびネットワークの知識があり、かつ今後もサーバーを運用するのでない限り、外部IPFSサーバーの利用をおススメします。外部IPFSサーバーには pinata や nfs.storage などがありますが、今回は有名な pinata を利用します。

https://app.pinata.cloud/pinmanager にアクセスし、uploadボタンを押して "CID" をクリックします。

ここに、今回のCIDと分かりやすい名前をつけ、'Search and Pin'をクリックします。pinata に ファイルとフォルダを pinすることにより、pinataがローカルの画像データを取得し、pinata 上の サーバーに保存してくれるはずです。また、無料版だと容量が足りなくなる可能性があれば、有料版も検討してください。

IPFSのサーバーのファイル取得にはしばらく時間がかかります。pinata では GateWay機能を利用することにより、 Web上で IPFSのファイルを表示することが可能なので、これで正しく取得されているかチェックしてください。


以上で完了です。あなたのGenerativeNFTプロジェクトが発展することを願っています。もしわからないことがあれば、お気軽に Hayatti.eth (https://twitter.com/HayattiQ) までご連絡ください。


この記事が気に入ったらサポートをしてみませんか?