「IPFS」の版間の差分
Blackteahamburger (トーク | 投稿記録) (分類を修正) |
Kusanaginoturugi (トーク | 投稿記録) (カテゴリーを変更(英語版準拠)) |
||
1行目: | 1行目: | ||
− | [[Category:ファイルシステム]] |
+ | [[Category:クラスタ化されたファイルシステム]] |
[[Category:ピアツーピア]] |
[[Category:ピアツーピア]] |
||
[[en:IPFS]] |
[[en:IPFS]] |
2021年8月1日 (日) 12:31時点における版
関連記事
- IPFS (InterPlanetary File System) は新しいハイパーメディア分散プロトコルで、コンテンツと識別子によって解決されます。IPFS を使うことで完全に分散されたアプリケーションを作成することができます。ウェブをもっと高速・安全・オープンにすることを目指しています。
- IPFS は全てのコンピュータを同一のファイルシステムを使って接続する分散型ファイルシステムです。いくつかの点で、IPFS はウェブの本来の目的と似ていますが、実際には単一の bittorrent 群体による git オブジェクトの交換に似ています。
インストール
go-ipfs パッケージまたは go-ipfs-gitAUR パッケージをインストールしてください。
IPFS を使うにはまず以下のコマンドを (通常ユーザーで) 実行してください:
$ ipfs init
上記のコマンドによって ~/.ipfs
ディレクトリが作成され必要なファイルが保存されます。
初期化したら IPFS デーモンを起動することができます:
$ ipfs daemon
ノードが起動して、ipfs
cli や localhost:5001/webui のウェブインターフェイスからアクセスできるようになります。さらに、ローカルゲートウェイが localhost:8080 で立ち上がります (デフォルトのポートは ~/.ipfs/config
で変更できます)。
サービスを使ってデーモンを起動
Systemd/ユーザーサービスを使うことで IPFS の起動を自動化できます。ログイン時にデーモンが起動し、万一クラッシュした場合は再起動されます。
~/.config/systemd/user/ipfs.service
[Unit] Description=IPFS daemon After=network.target [Service] ExecStart=/usr/bin/ipfs daemon Restart=on-failure [Install] WantedBy=default.target
サービスユニットは以下のコマンドで起動・有効化できます:
$ systemctl --user enable --now ipfs
ログアウトしてもユニットが起動し続けるように (そしてログインする前に起動するように) したい場合、linger を有効にします:
# loginctl enable-linger username
ファイル共有
IPFS を使ってファイルを共有するにはデーモンの実行が必要です。
$ ipfs add file
上記のコマンドはハッシュを出力します。以前に誰かが同じファイルを IPFS で共有していた場合、ハッシュは前にアップロードされたファイルと一致し、あなたのコンピュータはセカンドソースになります。
IPFS ハッシュを使ってファイルを入手するには、ipfs cat
を使います:
$ ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
上記のコマンドは他のアプリケーションにパイプすることができます。例えば、mpv で動画を視聴したい場合:
$ ipfs cat QmWenbjgZnA6UguLtmUYayS6e7UQM7woB15zuEymSRRMoi | mpv -
また、ファイルをダウンロードすることも可能です:
$ ipfs get QmWenbjgZnA6UguLtmUYayS6e7UQM7woB15zuEymSRRMoi
wget と同じように使えるユーティリティとして IPFS には ipgetAUR も存在します。ipget にはブートストラップノードが含まれているため、ipfs デーモンを起動・インストールする必要がありません。ファイルをダウンロードするには:
$ ipget QmWenbjgZnA6UguLtmUYayS6e7UQM7woB15zuEymSRRMoi
ファイルだけでなくフォルダも共有することができます。フォルダは再帰的に共有してください:
$ ipfs add -r folder
フォルダ内のファイルとキャッシュを全て閲覧するには (ハッシュがフォルダの場合):
$ ipfs ls QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
共有されたファイルには全て localhost:8080
の IPFS ゲートウェイを通して以下のようにアクセスできます:
http://localhost:8080/ipfs/QmWenbjgZnA6UguLtmUYayS6e7UQM7woB15zuEymSRRMoi
IPFS ノードを動かしていないユーザーでもネットワーク上のファイルにアクセスできる、パブリックゲートウェイもあります。例えば、公式 ウェブサイト のゲートウェイの場合:
http://gateway.ipfs.io/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
シンプルなホスティングと名前解決
IPFS で共有されたファイルは二度と削除されることがなく、ファイルに変更が加えられるとハッシュも変化します。そのためウェブサイトのホスティングに IPFS を使った場合、index.html
などのウェブページに変更があるたびにハッシュが変わってしまいます。昔のハッシュを使うことで前のウェブページにアクセスすることは可能です。完全に履歴を保った状態でコンテンツを永続的に保存するのが IPFS の目的です。IPFS には永続的なキャッシュを生成することができるネームサービス ipns が存在します。Ipns を使うことでハッシュを (初期化時に生成される) あなたのノードのユニーク ID に結びつけることができます。ID は次のコマンドで確認できます:
$ ipfs id
ハッシュを ID にバインドするには:
$ ipfs name publish HASH
ファイルが変更されると、ipfs add
によって生成された新しいハッシュがノード ID に割り当てられるため、同じアドレスを使って最新版のフォルダやファイルにアクセスすることが可能です。
ipns を使用する場合、アドレスのプリフィックスは ipfs ではなく ipns になるので注意してください:
http://localhost:8080/ipns/QmPtMQErTfQMbZTMMpQh65cpk5y7D94WdYJurCeRqvXKmD/