Open5

raspberry piにipfsのゲートウェイを生やしてみる

hotate29hotate29

Raspberry PiにはここからダウンロードしたKubo v0.25.0をインストールした。

https://dist.ipfs.tech/#go-ipfs

インストールしたのち、

ipfs daemon

を実行すると初期設定ではlocalhost:8080にゲートウェイが生える。

hotate29hotate29

設定を変更して0.0.0.0:8080でゲートウェイを動かすようにすると、外部からのアクセスが可能になる。しかし、外部からアクセスされ放題だと困りそうなので、localhost:8080のままTailscaleを使ってVPN内だけに公開することにした。

tailscale serve --bg --https=8080 localhost:8080

とすると、TailscaleのVPNに接続しているときに限りhttps://[サーバーのドメイン]:8080でアクセスできるようになる。ドメインはTailscale側で割り当てられて、VPN内でのみ有効(なので、基本的に外部に漏らしても問題ない。自分の場合はraspberrypi.tailded78.ts.netだった)。

https://tailscale.com/kb/1242/tailscale-serve

hotate29hotate29

これで完成ではあるが、自分の環境では問題が生じた。多くのpeerと接続(400〜600くらい?)することによってルーターのNATテーブルが溢れてしまったからか(明確な根拠はなし)、ルーターが頻繁に再起動し家全体のネット接続が不安定になってしまった。

自分の環境ではIPv6を使うことができるので、NATが原因(疑い)ならIPv4を禁止してしまおうそうしよう...ということで、IPv4を使ったピアとの接続を禁止してみるとインターネット接続が安定するようになった。

設定のSwarm.AddrFiltersのリストに"/ip4/0.0.0.0/ipcidr/0"を追加すると、IPv4を使った接続を禁止することができる。

https://github.com/ipfs/kubo/issues/7786#issuecomment-736116088

IPv6に対応したピアはそんなに多くないようだが仕方がない。

hotate29hotate29

ファイルの共有リンクを作成する際、パブリックゲートウェイを使用したリンクが作成される。初期設定ではipfs.ioを使用するようになっているが、時間内に到達できなかったのかタイムアウトとなることが多い。

cloudflareが運用しているcf-ipfs.comが前者と比べると早い。自分で建てたゲートウェイも使えるが、あえてよそのゲートウェイを使っても面白い。明示的にゲートウェイのpeerと接続するともっと早いが、ここまで来るとちょっと面倒くさい。

https://qiita.com/KEINOS/items/398a6d921b332fcad972

hotate29hotate29

先述のノードを使ってipfsに追加した画像のリンクを貼っておく(画像は去年東京に行ったときに撮影した)。飽きてノードを閉鎖したりしていなければ、リンク先で同じ画像が表示されるはず(他の人がこのファイルをpinするとは考えづらいので...)。

どちらもjpgファイル。

CID: QmbCJ3tKMPxu8hcq5GnwDfq8AVcZSbNJmAMEAd3GkXoDfr

ipfs.io
cf-ipfs.com

CID: QmVbovYYXFzQGmdqac8NPECdmzDagKadZULnGp9MXZnxe8

ipfs.io
cf-ipfs.com