Syncthing には困った癖がひとつあります。2 台のデバイスは、両方がオンラインのときしか同期しません。ノート PC はスリープ中、スマホはモバイルデータでポケットの中、自宅の PC は電源オフ。ファイルは、そのうち 2 台がたまたま同時に起きている瞬間を待つことになります。24 時間オンラインのピアがあれば、これは解決します。どのデバイスがいつ現れても、すべてサーバー経由で同期されます。
よくある反論は「それだとファイルが VPS に置かれる」というものです。これにも Syncthing は答えを用意しています。サーバーとは信頼しないデバイスとしてフォルダーを共有すれば、サーバーは自分では読めない暗号化データしか保存しません。
どのプランを選ぶか
Syncthing 自体はとても小さく、テストでは RAM 25〜30 MB 程度でした。本当に買うのはディスクです。サーバーは共有された各フォルダーの完全なコピーを持つからです。
| 同期するもの | プラン |
|---|---|
| 文書、メモ、設定ファイル、パスワードデータベースのファイル | Nano-IP:2 vCPU、1 GB、15 GB(月額 $8) |
| 何年分もの文書と少しの写真 | Micro-IP:2 vCPU、2 GB、25 GB(月額 $10) |
| 仕事用フォルダーや大きめのアーカイブ | Small-IP:4 vCPU、4 GB、35 GB(月額 $16) |
| 写真ライブラリ | Pro-32:400 GB(月額 $40)、お問い合わせ |
専用の IPv4 付きプランを選んでください。デバイスはポート 22000 でサーバーに届く必要があります。NAT プランでは SSH しか通らず、Syncthing は公開リレーにフォールバックします。遅くなるうえ、自分で管理できないインフラを通ることになります。ドイツかフィンランドのうち、近くて注文時に空いているほうを選んでください。サーバー代は暗号資産で払え、KYC は不要です。
インストール
Ubuntu 24.04 または Debian 12 で root として、Syncthing 公式リポジトリ(安定版 v2 チャネル)から:
mkdir -p /etc/apt/keyrings
curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" > /etc/apt/sources.list.d/syncthing.list
apt update && apt install -y syncthing
systemd で専用ユーザーとして動かします:
useradd -m -s /bin/bash syncthing
systemctl enable --now syncthing@syncthing
ufw allow 22/tcp && ufw allow 22000/tcp && ufw allow 22000/udp && ufw enable
ユーザー名を sync にしないでください。この名前はホームディレクトリが /bin のシステムアカウントがすでに使っていて、syncthing@sync は読み取り専用ファイルシステムのエラーで失敗します。私たち自身もここでつまずきました。
サーバーのデバイス ID を確認します。ほかのデバイスに貼り付けるのに使います:
runuser -u syncthing -- syncthing device-id
Web UI は 127.0.0.1:8384 だけで待ち受けます。それで正解です。自分のコンピューターから SSH トンネルでアクセスします:
ssh -L 8384:127.0.0.1:8384 root@YOUR_SERVER_IP
http://127.0.0.1:8384 を開き、まず Settings → GUI で GUI のパスワードを設定してください。
サーバーが読めない形でフォルダーを共有する
ノート PC(または信頼できる任意のデバイス)で:
- サーバーをデバイス ID でリモートデバイスとして追加します。
- 同期したいフォルダーを開いて Sharing を選び、サーバーにチェックを入れ、その横に暗号化パスワードを入力します。このパスワードはパスワードマネージャーに保存してください。これがなければ、サーバー上のデータはただのノイズです。
- サーバーの Web UI でフォルダーを承認し、フォルダーの種類に Receive Encrypted を選びます。
これで完了です。サーバーに実際に何が届いたか見てみましょう:
find /home/syncthing -path '*syncthing-enc*' -type f | head
ファイル名の代わりに …/I.syncthing-enc/C8/PICA7BFKFPSGQ06C4D4SQ50GB6E151QUNF1EOBK のようなパスが見えるはずです。テストでは、同期したファイルに含まれる語句をサーバー上で検索しましたが、何も見つかりませんでした。
ほかのデバイス同士は同じフォルダーを通常どおり共有し、サーバーとは同じ暗号化パスワードで共有します。パスワードを知っている信頼できるデバイスなら、どれでもサーバーから同期できます。古いノート PC が壊れたあとの新しいノート PC も同じです。
正直なところ
- 同期はバックアップではありません。 削除や誤った上書きも同期されます。信頼できるデバイスでバージョン管理を有効にするか、別の場所にバックアップを置いてください。
- 暗号化が隠すのは内容と名前で、すべてではありません。 ファイルサイズや変更のタイミングは、サーバー上でまだ推測できます。多くの人にとっては妥当なトレードオフですが、そうでないなら、この構成は向いていません。
- パスワードが鍵です。 なくすとサーバー上の暗号化コピーは役に立ちません。それが狙いであり、同時にリスクでもあります。
- スマートフォン。 公式のモバイルアプリはもうありません。Android にはコミュニティが保守するアプリがあり、iOS はサードパーティ製クライアントだけです。当てにする前に、自分の端末で確認してください。
裏で静かに同期するのではなく、カレンダーや連絡先、共有リンクを備えた本格的な Web UI が欲しいなら、Nextcloud を検討してください。ファイルをどこにでも置きつつ、自分のデバイス以外では読めないようにしたいだけなら、こちらのほうが軽い道具です。
関連記事
- VPS で Nextcloud をセルフホスト:Web UI 付きの本格的なプライベートクラウド
- Vaultwarden 向け VPS:パスワードを自分のサーバーで
- 暗号化ストレージ向け VPS:LUKS と、サーバー上の暗号化でできること・できないこと
- SSH 鍵認証の設定方法
- ufw ファイアウォールの設定方法
コメント
まだコメントはありません。最初になりましょう。