YadoriLink

ローカルファースト · ピアツーピア · オープンソース

ファイル内容を中央ストレージに置かない、フォルダー同期。

YadoriLink は、あなたの複数のデバイス間でフォルダーを同期します。ファイルは暗号化されたトンネルでデバイス間を直接移動します。サーバーが知るのは「あなたが誰か」「どのデバイスがどのフォルダーを持つか」まで、ファイルの中身は決して知りません。

pre-1.0 — 活発に開発中 · Rust · Linux / macOS / Windows

調整プレーン アカウント · デバイス ID · デバイスとフォルダーの対応 — ファイル内容は扱わない — ID のみ ID のみ ノート PC ~/work/design デスクトップ ~/work/design ファイル内容 — 直接・暗号化・ピアツーピア NAT 越しはホールパンチングで直接。プレーンは合図するだけ、中継しない
この分離が設計そのもの — ファイル内容はデバイス間に留まり、サービスが知るのは「誰が誰か」だけ。
01

YadoriLink を選ぶ理由

ファイルは最短経路で届く

内容はあなたのデバイスからデバイスへ直接移動します。他人のストレージを経由せず、間にリレーもありません。両方が家庭用ルーターの内側にいても、内容を見ない「合図」信号で NAT を貫通します。サービスは相手を見つける手助けをするだけで、ファイルのバイトは一切運びません。

すべて持つか、開いたものだけか

フォルダーをデバイスに丸ごと置くことも、オンデマンドにすることもできます。オンデマンドではプレースホルダーを置き、開いた瞬間に実ファイルを取得。容量を空けたいときは退避できます。フォルダーごと・デバイスごとに選べます。

誰にも中身は読めない — 運営者にも

ホストサービスが知っているのは「あなたが誰か」「どのデバイスがどのフォルダーを持っているか」だけ。ファイル内容はそもそもサーバーに届かないので、サーバー侵害や開示要求、詮索好きな運営者にも読めるものがありません。

どのOSでも同じ同期

macOS でも Windows でも Linux でも、同じエンジンが同じ判断をします。OS が違うせいで 2 台のマシンがコンフリクトの解決結果で食い違う、ということが起きません。

何でも自動化できる

アプリでできることはすべてスクリプトからもできます。cron からフォルダーをリンクする、CI で状態を確認する、NAS 上でヘッドレスに動かす。普段は GUI、必要な時に CLI。

信用せず、確かめられる

ファイル、鍵、ワイヤープロトコルに触れるコードはすべてオープンソース。読んで、ビルドして、自分で監査できます。

LAN でもインターネットでも、同じトンネル

デバイス間は WireGuard プロトコルの暗号化トンネルで接続します。ペアリング済みのデバイス同士なら、同一ネットワーク上ではローカルブロードキャスト / mDNS で相互発見し、インターネットに出ずに同期。インターネット越しでも、各デバイスのグローバルアドレスを見つけて NAT をホールパンチングし、間にリレーを挟まず直接つながります。

データロストに対するテスト

同期エンジンは決定論的シミュレーションテスト — シード付きカオスラン+データ喪失検出オラクル — で検証しています。編集が黙って消えることは、同期ツールで唯一許されないバグだからです。

02

何が違うのか

ピアツーピア同期自体は新しいものではありません。Syncthing や Resilio Sync は中央クラウドにファイル内容を置かずにフォルダーを同期しますし、Dropbox はアカウントやデバイスの管理をとても簡単にします。YadoriLink が目指すのは、その組み合わせです。

DropboxSyncthingYadoriLink
簡単なアカウント・デバイス管理
ファイル内容がサーバーに保存されない
開いた瞬間に取得するオンデマンドファイル
同期・転送・暗号化スタックがオープンソース
03

設計上のトレードオフ

クラウドコピー無し
共有内の全デバイスがオフラインの間、同期はどれかが戻るまで待ちます。ファイルを持つ「第三の場所」が無いことは、目的であると同時に制約でもあります。
帯域はあなたのもの
初回同期は実データがデバイス間を移動します。速度を決めるのはデータセンターではなく、あなたのデバイスの回線です。
リレー無し
デバイスは直接つながり、多くの家庭・オフィスの NAT を貫通します。ごく一部の厳しいネットワーク(両方が対称型 NAT の内側)では直接経路ができないこともあり、頼れる中継リレーはありません。その場合は、より通りやすいネットワークに移るまで待つことになります。
04

現在の状態

YadoriLink は pre-1.0 です。動くもの、足りないもの:

05

はじめる

1. ダウンロードしてインストール — ビルド済みパッケージを GitHub Releases(nightly)で配布しています:

これらはテストと早期フィードバックのためのビルドです。Windows ビルドは未署名のため SmartScreen の警告が出ます。macOS ビルドは未署名・未公証です。チェックサム(SHA256SUMS)を成果物と一緒に配布しています。

2. アプリを開いてサインイン — セットアップウィザードが、Google サインイン → デバイス登録 → フォルダーの作成、または新しいデバイスでの参加 → 最初のフォルダー選択まで案内します。もう 1 台にも同じようにインストールしてサインインすれば、同期が始まります。

ターミナル派なら、同じセットアップはコマンド 5 つです(インストーラーが yadorilink を PATH に配置します):

$ yadorilink login
$ yadorilink device register --name "my-device"
$ yadorilink share create my-share
$ yadorilink link ~/some/folder my-share
$ yadorilink status

ソースからビルドする場合は cargo build --workspace --release — 詳細は README を参照してください。