セルフホスト型サービス
syncthing/syncthing avatar
syncthing/syncthing

Syncthingを個人間ファイル同期の設計から理解する

Syncthing は P2P 接続で 2 台以上のコンピュータ間のファイルを継続的に同期し、データ損失と不正アクセスからの保護を最優先とする。

スター 88,616フォーク 5,474GoMPL-2.0

ひと目でわかる

これは何?
SyncthingのP2P同期、データ保護、GUI、Docker、署名付きreleaseとビルド方法をREADMEから整理します。
誰に向いている?
Syncthingは自分が管理する複数の端末間でファイルを同期し、中央サービスへの依存を減らしたい個人や小規模チームに向きます。共有フォルダを大規模な共同編集基盤として扱う用途は慎重な検証が必要です。
商用利用できる?
条件付きでできます。MPL-2.0 は弱いコピーレフトのライセンスで、商用やクローズドソースのソフトウェアにも組み込めますが、このソフトウェア自体のファイルを改変して配布する場合は、その変更を同じライセンスで公開する必要があります。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

中央サーバーではなく端末同士で同期

Syncthingはファイルを端末間で同期するプロジェクトです。READMEとGoalsは、ユーザーのデータ損失を避けること、攻撃者による盗聴や改変から守ること、扱いやすく自動的であることを優先順位として示しています。個人利用を中心に据え、一般的なコンピューターで動かす方針です。

同期はバックアップと同義ではありません。片方で削除したファイルが他方にも反映されれば、誤操作を複製する可能性があります。まず二台のテストフォルダで新規作成、変更、削除を行い、各端末の状態と履歴を確認します。重要なデータは別のバックアップ方式も用意し、同期先だけを復元元にしない設計にします。

暗号化された接続とデバイス境界

READMEは、盗聴や無許可の変更からデータを守ることを目標に挙げています。端末を識別して同期する仕組みを持ち、接続相手を自分の管理下に置く構成が基本です。ただし、目標の記述は特定の脅威モデルや組織の監査結果ではありません。

導入時は登録するdevice ID、共有するfolder、読み書き権限、リレーや検出サービスの利用を確認します。仕事用端末と私物端末を同じグループへ入れるなら、同期対象を分け、紛失時にどの端末を停止するかを決めます。READMEにない鍵保管やネットワーク制御は、公式security文書と自環境の設定で確認します。

競合と削除を実際に起こす

二台が同じファイルを同時に編集すると、単純な上書きでは利用者の意図を表せません。Syncthingの試験では、オフライン中に同一ファイルを編集し、再接続後に競合ファイルがどう作られるかを見ます。ファイル名、更新時刻、元データが残るかを記録し、利用者が戻せることを確認します。

大きなファイルや多数の小ファイルも別の負荷になります。変更検出から相手へ反映される時間、途中停止後の再開、容量不足時のエラーを同じ端末で確認します。同期が完了した表示だけで内容の正しさを判断せず、ハッシュやファイル数を使って両端を比較します。

GUIとバックグラウンド実行

READMEはgetting started guideと、Windows、Mac、Linux向けの複数GUI実装を案内しています。標準の利用者はGUIで端末とフォルダの関係を確認できますが、OSごとの起動方式や通知は実装によって違います。etcディレクトリにはバックグラウンドで動かす例もあります。

Dockerで動かす場合はREADME-Dockerを参照する構成です。コンテナ内の保存先を永続ボリュームへ結び、再作成後に設定と同期データが残るかを試します。ホストのUID、ファイル権限、ネットワーク、時刻が異なると、GUIが正常でも同期が止まることがあります。ログと端末状態を合わせて確認します。

署名付きreleaseと自前ビルド

Syncthingのrelease binaryはGPGで署名され、securityページから鍵を取得できるとREADMEに記載されています。自動upgrade機構はdistribution channelによって無効な場合があり、組み込みのECDSA署名を使う説明もあります。macOSとWindowsのバイナリにはコード署名が付くとされています。

ソースからは展開したrelease bundleまたはgit checkout後にgo run build.goを実行し、./binへバイナリを作ります。検証では、取得した署名を確認し、版を固定して同じfolder操作を行います。自動更新を有効にする場合は、更新先、再起動のタイミング、失敗時の旧版復帰を確認してから設定します。

MPLv2と個人向けの運用範囲

コードはMPLv2 Licenseで提供されます。改変版の配布や組み込みを計画する場合はLICENSEを読み、依存コンポーネントの条件も確認します。READMEは安全性と使いやすさの目標を示しますが、業務データの保持規程、監査ログ、法的なバックアップ要件までは決めません。

Syncthingが適するかは、誰が端末を所有し、どのfolderをどの期間同期し、削除や競合を誰が解決するかで変わります。まず小さなテストデータで再接続と復元を完了させ、DockerかOSネイティブかを選びます。運用を広げる際も端末追加、秘密情報、署名検証、バックアップを個別に記録します。

二台の端末で復元まで測る

Syncthingは二台のテスト端末でfolderを共有し、一台を停止した状態で追加、変更、削除を行います。再接続後にファイル数とhash、競合ファイル、更新時刻を比較し、容量不足と権限変更のエラーをログで確認します。Dockerを選ぶ場合は設定とデータのvolumeを分け、コンテナ再作成後にdevice IDと共有folderが戻るかを見ます。署名付きreleaseを検証した版で、自動upgradeを無効にした場合の更新手順と、別バックアップからの復元を一度完了させます。

編集部の結論

Syncthingは自分が管理する複数の端末間でファイルを同期し、中央サービスへの依存を減らしたい個人や小規模チームに向きます。共有フォルダを大規模な共同編集基盤として扱う用途は慎重な検証が必要です。導入前にテスト端末二台で追加、変更、削除、同時編集、再接続を試し、競合ファイル、暗号化接続、保存先、復元手順を確認してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート