PasteFerry

PasteFerry

しくみ

コピーしたあとに何が起きるか、どうつながるか、つながらないときはどうなるか。

コピーしたあと、何が起きるか

テキストも画像もファイルも、同じ道を通ります。

  1. 気づく

    バックグラウンドサービスがクリップボードの変化に気づきます。

  2. 送る

    テキストと 50 MB までのファイルはすぐに送り、それより大きいものは先に記録だけを送ります。

  3. 貼り付ける

    受け取った側はローカルに保存してからクリップボードに入れるので、貼り付けると本物のファイルになります。

PasteFerry の接続のしかた

同じネットワークなら直接相手を見つけます。別のネットワークではサーバーが橋渡しをしてできるだけ直接つなぎ、無理なときだけ中継します。内容は常に暗号化されます。

PasteFerry の接続のしかた コンピューター A と B は WebRTC で直接つながります。どちらもシグナリングでサーバーに接続し、直接接続に失敗したときはサーバーの TURN でデータを中継します。 シグナリング・中継サービス シグナリング、STUN、TURN 中継 シグナリング:接続情報の交換 中継:直接つながらないときだけ Mac ここでコピー Mac、Windows または Linux ここで貼り付け WebRTC 直接接続、DTLS 暗号化 データは 2 台のあいだだけを流れる データ(直接) データ(中継、予備) シグナリング
  • WebRTC 直接接続、DTLS 暗号化 データは 2 台のあいだだけを流れる
  • シグナリング・中継サービス シグナリング、STUN、TURN 中継
  • 中継:直接つながらないときだけ

うまくいかないとき

よくあるケースには、どれも対処しています。

同じネットワークなのに相手が見つからない
ペアリング時に相手のアドレスを入力すれば、その後は記憶されます。
直接つながらない
サーバーが中継します。内容は同じく暗号化されます。
相手がスリープした、切断された
復帰すると自動で再接続します。
ファイル送信中に切断された
つながったら続きから送ります。
Windows では使えないファイル名
全角文字に置き換えるので、名前はそのまま読めます。
パスワードをコピーした
Windows ではパスワードマネージャーからコピーした内容を飛ばします。

仕様

バージョン2.10.2(公開)
Mac アプリmacOS 13 Ventura 以降。Apple シリコン版と Intel 版に分かれ、ダウンロードはそれぞれ約 25 MB で Rosetta 不要。両方で動くユニバーサル版は約 47 MB
Windows アプリWindows 10 と Windows 11、x64。ユーザーごとのインストールで管理者権限不要。ダウンロードは約 23 MB
Linux アプリx64 と ARM64。.deb(Debian、Ubuntu など)または tar.gz(ほかのディストリビューション)、約 22 MB。X11 のデスクトップ、または XWayland 付きの Wayland デスクトップ(GNOME、KDE などは標準で搭載)が必要。GTK 3
サーバー「サービス」を使う場合や同じネットワークでは不要。自分で立てる場合は Linux x86_64/ARM64、macOS、Windows 10/11 x64 に対応。
表示言語日本語、英語、簡体字中国語、繁体字中国語(台湾・香港)。初期設定はシステムに合わせ、「設定」で切り替え可能
同期する内容プレーンテキスト、書式付きテキスト、画像とスクリーンショット、ファイル、フォルダ。種類ごとにオフにできる
転送WebRTC データチャネル。直接接続を優先し、つながらなければ TURN で中継。同じネットワークでは mDNS で発見し、UDP 8788 で接続情報を交換。複数の出口があるネットワークでは出口ごとに調査。ファイルは tar + zstd でストリーム転送
暗号化と身元DTLS によるエンドツーエンド暗号化。デバイスの身元は Ed25519 の鍵。シグナリングのメッセージはすべて署名付き
ペアリング5 分間有効な 6 桁のコード。0/O や 1/I のような紛らわしい文字は使わない。指紋は人が照合
自動同期の上限初期値 50 MB、1 MB〜1 GB で調整可能
ファイル送信1 台のデバイスへ、サイズ無制限。ファイルもフォルダまるごとも送れる。同じネットワークでは暗号化した TCP 接続(両方に 2.5.1 が必要)、使えないときは WebRTC に切り替え。インターネット経由と中継は WebRTC。切れても続きから送り、各ファイルを SHA-256 で検証。Mac から Linux 仮想マシンへ 1 GB を送る実測で 144.3 MB/s。実際の速度はネットワークとディスクしだい
連絡先F で始まる 7 文字の連絡先コードで追加。ローカルネットワークか「サービス」で交換し、安全コードも照合できる。連絡先とはファイルと画像だけを送り合え、200 文字までのメモを添えられ、毎回相手の受け入れが必要。連絡先にはクリップボード、履歴、デバイスは見えない。受信したファイルは実行権限を外し、Mac では検疫属性を付ける。双方に 2.6 以降が必要
履歴の保存期間初期値 3 日、1 時間〜30 日で調整可能。期限が来たら自動で削除
実測の速度LAN の直接接続で 20 MB のファイルを約 330 ミリ秒で転送、チェックサム一致
技術スタックバックグラウンドサービスとサーバーは Go(Windows では Go から Win32 を直接呼び出し、Linux では Go で X11 プロトコルを直接扱う)、アプリは Flutter(3 つの OS で同じコード)、メッセージ定義は Protocol Buffers
ライセンスGNU AGPL-3.0