これでアップロードは完璧!
前回まで
ipfs add
後にipfs dht findprovs
しても他のピアが保持してくれたのか、よくわからなかった。
情報源
pinata
登録
- pinata登録する
- パスワード作成に苦労した
- パスワード生成ツールの最強で合格するまで繰り返した
- メアドに送られたコードをコピペすることで完了
パスワードにて、大文字、小文字、数字、特殊文字(記号)が1字以上含まれているのにエラーになった。特殊文字がどの文字なのかわからないので、そのせいかもしれない。そんなに文句をいうなら問題ないパスワードを自動生成してほしいと思った。
APIキー作成
- ログイン画面にて右上のアイコンをクリックする
- API Keysをクリックする
- New Keyをクリックする
- Adminをクリックして全機能を有効化する
- Key Nameに適当な名前を入れる:
pinate_0
- Create Keyをクリックする
API Key
,API Secret
,JWT
が出力される- Copy Allする
- 適当にファイル保存しておく
- Doneをクリックする
pinataをリモートサービスとして登録する
ipfs pin remote service add <<nickname>> <<endpoint URL>> <<myAccessKey>>
ドキュメントにエンドポイントや登録方法が書いてある。
ipfs pin remote service add pinata https://api.pinata.cloud/psa YOUR_JWT
各引数を変数にいれると以下。
NAME='pinata'
URL='https://api.pinata.cloud/psa'
JWT='APIキー作成時に出力されたJWT'
ipfs pin remote service add "$NAME" "$URL" "$JWT"
登録済みサービスを一覧する。
ipfs pin remote service ls
pinata https://api.pinata.cloud/psa
表示された。OK!
あとでサービス名pinata
を使う。
アバター画像をほかのピアにもたせる
私のローカルにしかない私のアバター画像をIPFSのピアに持ってもらいたい。
ipfs init
generating ED25519 keypair...done
peer identity: 12D3KooWHMfGodTKWVQczi7WyJFECEA7SCcT4ByQ5FLqpm29R5TS
initializing IPFS node at /home/pi/.ipfs
Error: ipfs configuration file already exists!
Reinitializing would overwrite your keys.
ipfs add /tmp/ytyaru.png
added QmWqaEjFYBYnQMR4wBwmv5C1m6R2sZULSTPq7AxQeLmzZm ytyaru.png
2.25 KiB / 2.25 KiB [========================================================================================================] 100.00%
これで画像のハッシュQmWqaEjFYBYnQMR4wBwmv5C1m6R2sZULSTPq7AxQeLmzZm
が得られた。
ピンニングする
まずは以下コマンドでオンラインにする。
ipfs daemon
別タブでピンニングするコマンドを叩く。
まずはコマンドを調べる。以下コマンドを使う。
ipfs pin remote add
ヘルプ
$ ipfs pin remote add --help
USAGE
ipfs pin remote add <ipfs-path> - Pin object to remote pinning service.
SYNOPSIS
ipfs pin remote add [--service=<service>] [--name=<name>] [--background] [--] <ipfs-path>
ARGUMENTS
<ipfs-path> - Path to object(s) to be pinned.
OPTIONS
--service string - Name of the remote pinning service to use (mandatory).
--name string - An optional name for the pin.
--background bool - Add to the queue on the remote service and return immediately (does not wait for pinned status). Default:
false.
DESCRIPTION
Asks remote pinning service to pin an IPFS object from a given path or a CID.
To pin CID 'bafkqaaa' to service named 'mysrv' under a pin named 'mypin':
$ ipfs pin remote add --service=mysrv --name=mypin bafkqaaa
The above command will block until remote service returns 'pinned' status,
which may take time depending on the size and available providers of the pinned
data.
If you prefer to not wait for pinning confirmation and return immediately
after remote service confirms 'queued' status, add the '--background' flag:
$ ipfs pin remote add --service=mysrv --name=mypin --background bafkqaaa
Status of background pin requests can be inspected with the 'ls' command.
To list all pins for the CID across all statuses:
$ ipfs pin remote ls --service=mysrv --cid=bafkqaaa --status=queued \
--status=pinning --status=pinned --status=failed
NOTE: a comma-separated notation is supported in CLI for convenience:
$ ipfs pin remote ls --service=mysrv --cid=bafkqaaa --status=queued,pinning,pinned,failed
以下のような感じで値をセットする。
ipfs pin remote add --service=使用サービス名 --name=データ名 データのハッシュ
使用サービス名は登録したpinata
を使う。データ名はそのデータにわかりやすい名前をつけたいときに。ハッシュはipfs add
したときのハッシュ値。
SERV=pinata
NAME=avatar.png
HASH=QmWqaEjFYBYnQMR4wBwmv5C1m6R2sZULSTPq7AxQeLmzZm
ipfs pin remote add --service="$SERV" --name="$NAME" "$HASH"
ipfs pin remote add --service=pinata --name=blogs QmPMYeLBc3wX4LnJ2ZpMBL7izoqhZq9MbXhpU164Wg1gwz
以下のように出力されたら成功。
CID: QmWqaEjFYBYnQMR4wBwmv5C1m6R2sZULSTPq7AxQeLmzZm
Name: avatar.png
Status: pinned
もし以下のような警告が出たらオフラインである証拠。ずっと待機状態になってしまう。ipfs daemon
でオンラインにしてから再度ipfs pin remote add ...
すること。
WARNING: the local node is offline and remote pinning may fail if there is no other provider for this CID
アップロード確認
ipfs pin remote ls --service=pinata
QmWqaEjFYBYnQMR4wBwmv5C1m6R2sZULSTPq7AxQeLmzZm pinned avatar.png
上記のように登録した内容が出力されたらOK。
ついでに他の方法でも確認してみる。
ブラウザにIPFS Companionをインストールしておりipfs daemon
中なら、ブラウザに以下URLを入力することでアクセスできる。今回登録した私のアバター画像が表示されるはず。
ipfs://QmWqaEjFYBYnQMR4wBwmv5C1m6R2sZULSTPq7AxQeLmzZm
または以下でもいい。
https://ipfs.io/ipfs/QmWqaEjFYBYnQMR4wBwmv5C1m6R2sZULSTPq7AxQeLmzZm
無事に画像が表示された。がURLがhttp://(長い文字列).ipfs.localhost:8080
となっていてローカルっぽい。
以下のコマンドではひとつのピアしか表示されなかった。
$ ipfs dht findprovs QmWqaEjFYBYnQMR4wBwmv5C1m6R2sZULSTPq7AxQeLmzZm
12D3KooWRgEQzCt1LKMiqo8nqRuyXVPH6cCiZCDK3zjUMu5N2e6Q
まあたぶんipfs pin remote ls
で表示されているからアップロードされたのだろう。
pinataのログイン後のFiles
一覧にそれっぽいのが表示されているし。目玉アイコンで画像を表示できたし。アップロードできてるね。OK!