IPFS

提供: ArchWiki
2016年9月12日 (月) 22:12時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:インターネットアプリケーション en:IPFS {{Related articles start}} {{Related|デーモン}} {{Related articles end}} [https://github.com/i...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

GitHub の IPFS README.md より:

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/

参照