インターネットや外部サーバーを使わず、ローカルネットワーク上の近くのデバイスにファイルやメッセージを送れる、無料のオープンソースアプリです。
n0-computer/iroh
公開鍵でアプリ同士を接続するRustライブラリ。QUIC、ホールパンチング、リレーへのフォールバックに対応。
- スター
- 12,779
- フォーク
- 778
- 未解決の Issue
- 183
- 最終コミット
- 13 時間前
これは何?
Irohを使うと、IPアドレスではなく公開鍵を指定してアプリからピアに接続できます。ライブラリがピアへの最適な経路を見つけて維持し、まずホールパンチングによる直接接続を試み、失敗した場合は公開リレーサーバーにフォールバックします。
接続にはnoqライブラリを介したQUICを使用します。認証付き暗号化、優先度を設定できる並行ストリーム、データグラム転送を利用でき、ヘッドオブラインブロッキングも回避できます。開発者はこれらの接続上に独自のプロトコルを構築できます。
リポジトリには、BLAKE3を使ったコンテンツアドレス型転送のiroh-blobs、パブリッシュ・サブスクライブ型オーバーレイネットワークのiroh-gossip、結果整合性を備えたキーバリューストアのiroh-docsといった、すぐに使えるプロトコルも用意されています。他言語向けのバインディングは、別のiroh-ffiリポジトリで管理されています。
主な機能
- 01IPアドレスではなく公開鍵でピアに接続
- 02ホールパンチングによる直接接続と、失敗時のリレーへのフォールバック
- 03暗号化と多重化ストリームに対応したQUIC接続
- 04ブロブ転送、ゴシップ、キーバリュードキュメント向けの既成プロトコル
- 05公開リレーサーバーの実装をワークスペースに同梱
ユースケース
- NAT配下のデバイス同士を接続するP2Pアプリ
- 中央サーバーを介さずにデバイス間でファイルを同期
- ノード間のリアルタイムメッセージングやPub/Subオーバーレイの構築
クイックスタート
- 1
cargoでRustライブラリをインストールする
cargo add iroh - 2
コード全体はechoのサンプルを参照してください
使う前に知っておきたいこと
- 主にRustライブラリです。他の言語では、別プロジェクトのiroh-ffiバインディングを利用します。
トピック
よくある質問
- iroh とは?
- 公開鍵でアプリ同士を接続するRustライブラリ。QUIC、ホールパンチング、リレーへのフォールバックに対応。 Irohを使うと、IPアドレスではなく公開鍵を指定してアプリからピアに接続できます。ライブラリがピアへの最適な経路を見つけて維持し、まずホールパンチングによる直接接続を試み、失敗した場合は公開リレーサーバーにフォールバックします。
- iroh は無料で使えますか?ライセンスは?
- iroh は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- iroh は今もメンテナンスされていますか?
- 活発にメンテナンス中。iroh の最終コミットは 2026年10月19日 です。
- iroh は何に使えますか?
- NAT配下のデバイス同士を接続するP2Pアプリ 中央サーバーを介さずにデバイス間でファイルを同期 ノード間のリアルタイムメッセージングやPub/Subオーバーレイの構築
- iroh のインストール方法は?
- cargoでRustライブラリをインストールする: cargo add iroh コード全体はechoのサンプルを参照してください
- iroh はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/n0-computer/iroh
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
ローカルのTCPポートをリモートサーバー経由で公開する、Rust製のシンプルなCLIです。
TailscaleのWireGuardデータプレーン経由で、アカウントやコントロールプレーンなしに2台を接続するnetcat風CLI兼Goライブラリ。
Rust製のターミナルネットワーク診断ツール。通信状況や接続、パケットをリアルタイム表示し、1コマンドで診断できます。
Androidとワイヤレスでファイルを送受信できる、Google Quick Shareプロトコル対応のLinux向けGTKクライアント。
tmuxなどにタブや分割を任せる、クロスプラットフォーム対応のGPUアクセラレーションOpenGL端末エミュレーター。