自由のなる木

RSS
公開日
2022-09-14

Syncthing でプライベートかつセキュアにコンピュータ間でファイル同期する

以前、Guix-jp でパスワードマネージャについての会話があった際に、Syncthing という自由ソフトウェアを知り使い始めている。

Syncthing は 2 台以上の信頼関係を結んだコンピュータ間で、セキュアにファイルを同期するソフトウェアで、PC はもちろんのこと、Android ともファイル同期をすることができる。

用途

現在、私はラップトップ (GNU Guix) とスマートフォン (GrapheneOS) で相互に信頼関係を結び、下記の用途でファイル同期している。

  • 重要なファイル、秘密情報を含むファイルの相互保持
  • Org モードのディレクトリの相互保持
  • 単純なファイル交換
  • 各端末で参照したいファイルの相互保持

ファイル同期はディレクリ毎に設定でき、送受信、送信のみ、受信のみが選べたり、暗号化の有無なども設定できる。

Syncthing では Web GUI が用意されているので、ブラウザで Web GUI にアクセスして設定ができる。

重要なファイル、秘密情報を含むファイルの相互保持

私は現在、ラップトップとスマートフォン同士でのファイル同期しかしていないため、使用できるストレージ容量は、スマートフォンに依存して少なめになる。

それでも、失われては困る重要なファイルを相互保持して互いにバックアップをするには十分な容量がある。

例えば、スマートフォンの MFA で使用する認証アプリのバックアップファイルや、YouTube や Podcast のサブスクリプション一覧やプレイリスト、設定ファイルなどだ。

これらのファイルを第三者の手に預けることなく、セキュアに相互保持できるのは安心感がある。

大災害で被災したりしない限りは、ラップトップとスマートフォンが同時にダメになることはあまり起こり得ないことだし、相互保持するだけでバックアップの機能は十分果たすと思っている。

ちなみに、Syncthing はバージョニングなどにも対応しているが、スマートフォン側の容量も限られるため、そこまではやっていない。

Org モードのディレクトリの相互保持

ラップトップで編集した Org モードのファイルをスマートフォンで閲覧したり、編集したりしたいというニーズがあり、スマートフォンには Orgzly をインストールしている。

Orgzly はタスク管理に特化しているところがあり、文書を記述する用途では微妙だが、タスク管理に関してはとても使い勝手が良い。1

ただ、ラップトップとスマートフォンでの同期方法に悩んでいた。

過去にはプライベートリポジトリに置いたファイルを git push & pull で同期するようにしたりなどいろいろ試してみたのだが、Syncthing でディレクトリ同期するのが一番楽だった。2

単純なファイル交換、各端末で参照したいファイルの相互保持

スマートフォンで撮影した写真をラップトップで開きたいなどの単純な用途でファイル交換するのにも使っている。

探せば別のソリューションがあるのかもしれないが、クリップボードの共有の代わりにファイルを介してやり取りしたりもしている。

SNS で使用するアイコン画像など、ラップトップでもスマートフォンでも使用するファイルなども、少しずつクラウドストレージから Syncthing に移し始めている。

Guix で Syncthing を利用する

私はラップトップで Guix を使用しているため、Guix で Syncthing を利用する方法についても触れておく。

Guix ではネットワークサービスのひとつとして Syncthing サービスが提供されている。

Networking Services (GNU Guix Reference Manual)

したがって、Guix の場合は利用するサービスに syncthing-service-type を追加し、guix system reconfigure でシステムを再構成するだけで良い。

(use-service-modules ;; ...省略
                     syncthing)
;; ...省略
(operating-system
  ;; ...省略
  (services
   (append
       (list ;; ...省略
             (service syncthing-service-type
                      (syncthing-configuration (user "taiju")))
             ) ;; ...省略
       %desktop-services))
  ;; ...省略
)

私のラップトップのシステム構成全体を確認したい場合は下記で確認できる。

system-config.scm

今後について

もう一台、ストレージの潤沢な別のコンピュータを確保して、大容量でも同期ができるようにしていきたい。

クラウドストレージから完全に離脱することができれば、老後まで安心してデータを保管できる。

Syncthing 以外にも様々なソリューションはあるが、Syncthing は中央集権的なサーバが不要で、セットアップもきめ細かな設定も簡単にできるため、個人のファイル同期の救世主になると思う。

以上。


  1. アウトラインの階層を浅くしないと使い辛いため、タスク管理専用のファイルを用意して、タスクとなる見出しがトップレベルになるように org-capture テンプレートを調整した方が良い。 

  2. Dropbox を使えば良いではないかというコメントもあるだろうけど、F-Droid 版の Orgzly を使いたいし、プライベートでは不自由な外部サービスへの依存はできる限り減らしたい。