完全な分散、非集中による同期を実現する Syncthing

◆ 概要

Syncthing は「非集中によるデータ同期」を実現する機能です。 DropBox や Waffle Cell でも利用できる ownCloud とはその思想が大きく異なります。

  1. 中央の頭脳がなく、各クライアントには同等のプログラム(サービス)が動く※
  2. 複数デバイス(PCやWaffle Cell、タブレットなど)には必ずデータの複製が作成される
  3. 多くのデバイス間(例数百、数千・・・)で分散しながらデータを「伝播」するので集中処理と違い回線がボトルネックになることはない

※ 複数のデバイスの中で最低1台が24時間動いていない場合同期が実現できないことがあるので、 Waffle Cellをその「中心」として利用すると理想的な同期環境が実現できる。


◆ 基本的な考え

以下は基本的な同期設定の考え方です。 ここで事前に全体の流れを理解することがSyncthingを理解する早道です。必ずよく読んで下さい。

  1. 各デバイスに Syncthing をインストール

    Waffle Cell へのインストールは管理ページの「サービスの追加」で簡単に行えます。
    また、SyncthingはWaffle Cell内の各仮想デスクトップで独立に動作します。

  2. 各デバイス毎に同期したいフォルダを作成します。

    ただし、初期設定では Sync という同期用フォルダが自動で作成され、 今回のこの説明ではこのフォルダを同期するという事で説明を進めます。
    独自のフォルダを作成し同期することも可能です。

  3. デバイスの1台(例:Waffle Cellの仮想デスクトップ)からSyncthingが生成する「ID」を他のデバイスのSyncthingに登録します

    これでデバイス間の関連付けが行われます。 通信はP2Pと呼ばれる方式で、さらに完全に暗号化されているので第三者に傍受されることはありません。
    このとき各デバイスではどのフォルダと同期するかを指定します(例:Sync)

  4. 最初にIDを発行したデバイス (例:Waffle Cellの仮想デスクトップ) のSyncThingには他のデバイスがIDを入力した旨の通知があるので、それぞれ個別に受け入れ許可を出します。
    この時このデバイスでもどこのフォルダと動機するかを指定します。


○ Waffle Cellに Syncthing をインストールする

Waffle Cell へのインストールはいつものように非常に簡単です。

  1. 管理ページヘログイン

    ブラウザで http://L.xxxxxx.wafflecell.com (xxxxxxはホスト名)にアクセスし、「管理ページ」をクリック

  2. サービスの追加」をクリック
  3. Updateタグにある「** サービス一覧のアップデート **」を実行

    この段階で各種サービスのインストーラが最新になります

  4. ネットタグにある「Syncthing - 仮想デスクトップアプリ」を実行

この段階でWaffle Cellの各仮想デスクトップからSyncthingが利用できるようになります。

試しに起動をしてみると次のようにブラウザが開きます。


◆ 他のデバイスに Syncthing をインストールする前にIDを取得してみる

仮想デスクトップでSyncthingを起動し、右上にある「メニュー」の「IDを表示」をクリックします。

すると「この」仮想デスクトップにインストールしたSyncthingのIDが表示されます。 このIDを他のデバイスに引き渡すことでデバイス間での通信が可能になります。(p2p方式)

この長いIDを暗記することはできないでしょう。メモを取るのも面倒です。 そこでQRコードで携帯やスマホに取り込んでから携帯メールで各デバイスにこのIDを送るか、 ファイルに一度保存して他のデバイスから読み込むか・・・・・頑張って下さい!


◆ 他のデバイスにも Syncthing をインストールする

Waffle Cell へのインストールと違い、他のデバイスへのインストールは少し厄介な場合があります。

あぁ、Waffle Cellって・・・結構簡単。

  1. Windows

    いくつかのクライアントソフトが用意されていますが、SyncTrayzorがオススメです。
    ここのページ から最新版のインストーラーをダウンロードします。(英語のページです)

    「SyncTrayzorSetup-x64.exe」(64ビットインストーラ)や 「SyncTrayzorSetup-x86.exe」(32ビットインストーラ)があるので、それをダウンロードして実行します。

    ブラウザやインストール時に警告が出ますので、いろいろと工夫をして回避して下さい。 インストーラーは英語ですが、どんどんと進んていけばインストールが完了します。

  2. Android

    Google Play から「Syncthing」をイントールします。 標準の共有フォルダは写真を収めるところになります

  3. iPhone

    残念ながら iPhone 用のクライアントソフトは現在(2017年3月)開発中です。 Go という開発言語の iPhone への対応が遅れているのが利用だそうです。

  4. その他(Windowsも含む)

    このページ にある各OS用 Syncthing をダウンロードします。

    圧縮をとき、実行ファイル syncthing(.exe)を実行するとブラウザが開き操作ができます。

以上ですべての準備が整いました。


◆ Waffle Cellで取得したIDを他のデバイスで入力する

同期したい他のデバイスで Syncthing を起動し、右下にある「+接続先のデバイスを追加」をクリックします。


「デバイスID」(ここではWaffle CellのID)を入力し、 「このデバイスと共有するフォルダ」としては今回は「Default Folder」を選択し保存します。

これでこのデバイスの設定は終わりです。あとはWaffle Cell側での認証作業(許可)です。


◆ Waffle CellのSyncthingで同期を許可する

5分程度待つとIDを発行したデバイス(今回はWaffle Cellの仮想デスクトップ)に許可を求める表示が出ます。

「+デバイスを追加」をクリックし受け入れます。

「Default Folder」をクリックにチェックを入れ、 Waffle Cell内で同期するフォルダを指定します。 (この場合、ホームの Sync が Default Folder となります)

これで同期がはじまります!