Syncthing シリーズ目次
- Syncthing の使い方:デバイスのペアリングからファイル同期までの実用メモ
- Docker で Syncthing をデプロイする:Compose、ポート、ボリュームマッピング
- Syncthing で複数デバイスを構成する方法:ピアネットワーク、スター型トポロジー、Introducer
- Android で Syncthing を使う方法:Syncthing-Fork の設定と写真バックアップ
- Syncthing の複数デバイス・複数フォルダー管理:トポロジー、命名、バージョン管理
- Syncthing で iPhone の写真をパソコンや NAS に同期する方法
Syncthing は分散型の P2P アーキテクチャを採用しています。従来の意味での Server と Client の区別はなく、プロトコル上はすべてのデバイスが対等なピアです。
ただし実際の運用では、次の二つの形に整理できます。
- 純粋なピアネットワーク:各デバイスがほかのデバイスと直接ペアリングする。
- スター型ネットワーク:NAS、サーバー、常時稼働の PC を中心ノードにし、ほかのデバイスはそれとだけペアリングする。
どちらも Syncthing の設計に合っています。違うのは管理コストと日常の使い勝手です。
まず「対等」と「疑似サーバー」を理解する
Syncthing の各デバイスには固有の device ID があります。二つのデバイスがお互いの ID を追加し、同じフォルダーを共有すれば同期できます。
つまり Syncthing には「サーバー側がすべてのデータを保持しなければならない」という前提はありません。あなたが「サーバー」と呼んでいるものは、多くの場合、運用上中心に置いた常時稼働デバイスです。
たとえば:
- NAS は常時稼働し、容量も大きいので中心ノードに向いています。
- スマートフォンやノート PC はオフラインになりやすく、エッジデバイスとして扱うのが自然です。
- デスクトップ PC は高性能でも、24 時間稼働とは限らないため、通常の同期ノードとして考えます。
この「中心ノード」はプロトコル上のサーバーではありません。トポロジー設計の中で、管理と中継を担わせるデバイスです。
モード 1:純粋な Peer Mesh ネットワーク
純粋なピアモードでは、すべてのデバイスがほかのすべてのデバイスとペアリングします。
たとえば四つのデバイスがあるとします。
- NAS
- デスクトップ
- ノート PC
- スマートフォン
この場合、各デバイスは残り三つのデバイスと接続します。これにより、オンラインの任意の二台が直接同期できます。
利点:
- 転送経路がより直接的です。
- 一台がオフラインでも、ほかのオンラインデバイス同士は同期できます。
- 特定の中心ノードに依存しません。
欠点:
- デバイスが増えるほど、ペアリング関係が複雑になります。
- 新しいデバイスを追加するとき、複数の既存デバイスで確認と設定が必要になります。
- フォルダー共有の関係が分散しやすくなります。
デバイス数が少ない場合、純粋なピアモードは快適です。たとえば PC 一台とスマートフォン一台、または二台の PC でメモを同期するだけなら、複雑に考える必要はありません。
しかしデバイスが五、六台以上になると、完全接続の関係を手作業で維持するのはだんだん面倒になります。
モード 2:NAS を中心にしたスター型トポロジー
スター型は家庭や個人の生産性用途に向いています。
長時間稼働し、容量が十分で、ネットワークが安定しているデバイスを中心ノードにします。たとえば:
- NAS
- Synology
- ソフトルーター
- ミニ PC
- 自宅 Linux サーバー
そしてほかのデバイスは、その中心ノードとだけペアリングします。
|
|
スマートフォンはノート PC と直接ペアリングする必要がなく、ノート PC もデスクトップと直接ペアリングする必要はありません。すべて NAS を経由して間接的に同期します。
利点:
- 管理が簡単です。
- 新しいデバイスは NAS とだけペアリングすれば済みます。
- NAS がバージョン保持やバックアップの受け皿になります。
- 24 時間同期に向いています。
欠点:
- NAS がオフラインになると、ほかのデバイス同士は同期を続けられない場合があります。
- すべての通信が NAS を通る場合、NAS のネットワーク性能とディスク性能が体験に影響します。
- 中心ノードの権限管理を慎重に行う必要があります。
すでに NAS や常時稼働の小型サーバーがあるなら、まずスター型トポロジーをおすすめします。Syncthing の P2P の強みを残しつつ、日常管理はかなり中央集約型の同期に近づきます。
複数デバイス設定の基本順序
どのトポロジーを使う場合でも、Syncthing の設定順序は同じです。
- 先にデバイスをペアリングする。
- 次にフォルダーを共有する。
- 最後に受信側でローカルパスを確認する。
最初からあちこちにフォルダーを作らないでください。先にデバイス関係を整理しておくと、後の設定が乱れにくくなります。
ステップ 1:デバイスを接続する
デバイス A とデバイス B を接続するとします。
デバイス A はスマートフォン、デバイス B は NAS や PC だと考えてください。
デバイス A で:
- Syncthing Web UI を開きます。
- 右上の
操作をクリックします。 ID を表示を選びます。- device ID をコピーするか、QR コードを表示します。
デバイス B で:
- Syncthing Web UI を開きます。
リモートデバイスを追加をクリックします。- デバイス A の ID を入力します。
My-Phoneのような識別しやすい名前を付けます。- 保存します。
その後デバイス A に戻ります。通常は、デバイス B が接続しようとしているという通知が表示されるので、承認します。
ここまでで二台のデバイスは対等な関係を確立しました。ただし、まだどのフォルダーも同期していません。
ステップ 2:フォルダーを作成して共有する
デバイス A で フォルダーを追加 をクリックします。
よく使う項目:
- フォルダーラベル:自分が見るための名前。例:
Notes。 - フォルダー ID:デバイス間で識別するための ID。
notesのような安定した英語名がおすすめです。 - フォルダーパス:このデバイス上の実際のパス。
次に 共有 タブへ切り替え、先ほどペアリングしたデバイス B にチェックを入れます。
保存すると、デバイス A からデバイス B にフォルダー共有の招待が送られます。
ステップ 3:共有を受け入れる
デバイス B の Web UI を開いて数秒待つと、通常は次のような通知が表示されます。
|
|
追加をクリックし、デバイス B 上のローカル保存先を指定します。
例:
|
|
Docker デプロイの場合は、コンテナー内パスになります。
|
|
保存すると同期が始まります。
ここで重要なのは、各デバイスのパスは同じでなくてもよいということです。Syncthing はフォルダー ID で同期関係を識別し、すべてのデバイスに同じローカルパスを要求しません。
スター型トポロジーの設定方法
NAS 中心の構成を使うなら、次のようにします。
- まず NAS に Syncthing をデプロイする。
- すべてのスマートフォン、PC、サーバーを NAS とだけペアリングする。
- NAS 上で主要な同期フォルダーを作成または受け入れる。
- 新しいデバイスは NAS の device ID だけを追加する。
- 同期したいフォルダーを、NAS と対象デバイスの間で共有する。
例:
|
|
この構造はとても分かりやすいです。NAS を同期関係のコントロールパネルとして扱えます。
Introducer とは何か
Syncthing には Introducer という便利な機能があります。日本語では「紹介者」や「Introducer」と表示されることがあります。
これは複数デバイス環境に向いています。
NAS を Introducer に設定したとします。その後、新しいデバイスが NAS とペアリングすると、NAS は自分が知っているほかのデバイスを新しいデバイスに紹介できます。既存の共有関係の反映にも役立ちます。
これにより、同じクリックや同じペアリング作業を繰り返す必要が減ります。
向いているケース:
- 家に複数の PC とスマートフォンがある。
- NAS が長時間稼働する中心ノードになっている。
- 新しいデバイスをよく追加する。
- デバイス関係の手動メンテナンスを減らしたい。
ただし Introducer は、自動的に確立される関係の範囲を広げます。完全に信頼できないデバイスを Introducer にしないでください。トポロジーを理解しないまま気軽に有効化するのも避けましょう。
より安全な考え方は次の通りです。
- NAS またはメインサーバーだけを Introducer にする。
- 普通のスマートフォンやノート PC は Introducer にしない。
- 新しいデバイスを追加した後、自動追加されたデバイスとフォルダーを確認する。
フォルダータイプがデータの向きを決める
Syncthing の権限制御は、主にフォルダータイプに現れます。
フォルダー設定を開き、オプション内の Folder Type を調整します。
よく使う三種類があります。
Send & Receive
デフォルトのモードです。双方が変更を送信し、受信できます。
向いている用途:
- 複数デバイスでノートを編集する。
- 複数の PC で文書を同期する。
- 一般的な双方向同期フォルダー。
これは「本当の対等」に最も近いモードです。
Send Only
このデバイスは送信のみ行い、ほかのデバイスからの変更を受け取りません。
向いている用途:
- データの発生元。
- メインディレクトリをほかのデバイスへ配布する。
- リモート側の変更でこのデバイスが影響を受けないようにする。
たとえば NAS 上のソフトウェアインストーラー用ディレクトリを Send Only にし、ほかの PC は受信だけにできます。
Receive Only
このデバイスは受信のみ行い、ローカル変更を外へ送信しません。
向いている用途:
- バックアップ機。
- 読み取り専用ミラー。
- ローカルの誤削除が元データへ逆流するのを防ぐ。
たとえば NAS でスマートフォンの写真を受け取る場合、スマートフォン側で写真を削除しても NAS 側まで削除したくないなら、フォルダータイプと削除ポリシーをきちんと設計する必要があります。
フォルダーごとに違うトポロジーを使える
Syncthing のトポロジーは、サイト全体で一つに統一する必要はありません。フォルダー単位で設計できます。
例:
notes:デスクトップ、ノート PC、スマートフォン、NAS がすべて Send & Receive。photos:スマートフォンが送信し、NAS が受信してバージョンを保持する。downloads:デスクトップと NAS が同期し、スマートフォンは参加しない。backup:メイン PC は Send Only、NAS は Receive Only。
すべてのディレクトリを一つのルールに押し込まないでください。複数デバイス同期で本当に重要なのは、デバイス数ではなくデータの流れです。
衝突と誤削除を先に考える
複数デバイス同期でよく起きる問題は、設定失敗ではありません。同期が成功した後の誤削除や競合です。
問題が起きやすい場面:
- 二台のデバイスが同じファイルを同時に編集する。
- スマートフォンアプリがディレクトリを自動クリーンアップする。
- 一台のデバイスでパスを間違え、空のディレクトリを作って同期してしまう。
- キャッシュ、一時ファイル、作業状態ファイルをまとめて同期してしまう。
- NAS 側でバージョン保持を有効にしていない。
おすすめ:
- 重要なディレクトリでは NAS 側でファイルバージョン管理を有効にする。
.stignoreでキャッシュや一時ファイルを除外する。- 新しいフォルダーの初回同期前に、少量のテストファイルで検証する。
- 削除ポリシーが明確でない場合、すべてのデバイスを Send & Receive にしない。
おすすめ構成
NAS または常時稼働サーバーがあるなら、スター型トポロジーをそのまま使うのがおすすめです。
- NAS を中心ノードにする。
- NAS とすべてのデバイスをペアリングする。
- 通常のデバイスは NAS とだけペアリングする。
- NAS を Introducer にできる。
- フォルダーごとに Send & Receive、Send Only、Receive Only を選ぶ。
- 重要なフォルダーでは NAS 側でファイルバージョン管理を有効にする。
- 新しいデバイスを追加した後、まずテストフォルダーを共有してパスと権限を確認する。
二、三台だけで、どれも頻繁にオンラインになるなら、純粋なピアモードでも問題ありません。より直接的で、速度も良くなることがあります。
まとめ
Syncthing は P2P の対等アーキテクチャですが、すべてのデバイスを複雑なメッシュ構造にする必要はありません。
小規模な環境なら純粋なピアモードで十分です。デバイスが多い場合や、NAS あるいは常時稼働ホストがある場合は、スター型トポロジーをおすすめします。NAS に中心ノードと Introducer の役割を持たせ、ほかのデバイスは NAS とだけ関係を作ると、管理がかなり簡単になります。
本当に考えるべきなのは、どのデバイスを信頼するか、どのディレクトリを同期するか、データがどこから来るか、誤削除時にどこがバージョンを保持するかです。トポロジーは手段であり、データの流れこそが設定の核心です。