Syncthingとは?

Syncthingは、中央サーバーを介さず、デバイス間でフォルダーを直接同期するオープンソースプログラムです。このプロジェクトでは公式イメージ syncthing/syncthing が提供されており、そのWeb GUIはポート8384で、同期プロトコルはTCPおよびQUIC用にポート22000を使用します。同じネットワーク上のデバイスは、ポート21027でのブロードキャストによって互いを検出します。

ツールの説明

このツールは、プロジェクトのDocker READMEに従ったSyncthing用の compose.yaml を作成します。デフォルトではホストネットワークを使用します。これは、Syncthingがローカルネットワーク上のデバイスを認識できるため、READMEで推奨されています。このモードでは STGUIADDRESS の設定を解除するため、GUIはSyncthingの設定で指定されたアドレス(デフォルトでは 127.0.0.1:8384)で待ち受けます。ブリッジモードを選択することもできます。その場合、GUIポート、TCPおよびUDP用の同期ポート、検出ポートが公開され、ブリッジモードによる制約について警告が表示されます。ホスト名、PUIDPGID によるユーザーとグループ、任意の UMASKPCAP、データフォルダー、ホストから使用する追加のフォルダーなどを設定できます。GUIアドレスに従うヘルスチェックも追加されます。すべてブラウザー上で作成できます。

機能

  • 推奨されるホストネットワーク、またはポート8384、22000/tcp、22000/udp、21027/udpを公開するブリッジモード
  • ホストモードでのGUI待ち受けアドレス、および他のマシンからアクセス可能になる場合の警告
  • ブリッジモードでのGUIポートのバインドアドレス(127.0.0.1 など)
  • PUIDPGIDUMASKPCAP、およびデバイス名として使用するホスト名
  • ホスト上のデータフォルダーまたは名前付きDockerボリューム(ボリュームは自動的に宣言されます)
  • 同期する追加のフォルダー(それぞれ読み取り専用に設定可能)
  • READMEに記載されているヘルスチェックを、GUIのポートとアドレスに合わせて調整したもの
  • その他の環境変数、ファイルの内容を説明するコメント、および compose.yaml としてのダウンロード

デフォルト設定では、Syncthing Docker READMEに記載されている次の例が生成されます。

services:
  syncthing:
    image: syncthing/syncthing
    container_name: syncthing
    hostname: syncthing
    network_mode: host
    environment:
      PUID: "1000"
      PGID: "1000"
      STGUIADDRESS: ""
    volumes:
      - ./st-sync:/var/syncthing
    healthcheck:
      test: curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
      interval: 1m
      timeout: 10s
      retries: 3
    restart: unless-stopped

ヒント

  • 結果を compose.yaml として保存し、docker compose up -d で起動します。その後、http://127.0.0.1:8384 を開きます
  • Dockerのデフォルトのブリッジモードではデバイスのローカルアドレスが隠されるため、接続に時間がかかったり、リレー経由で接続されたりします。可能な場合はホストモードを使用してください
  • イメージはデフォルトで 0.0.0.0:8384 で待ち受けます。そのため、ホストモードでは STGUIADDRESS の設定を解除し、ブリッジモードでは、他のマシンからアクセスする必要がない限り、公開するGUIポートを 127.0.0.1 にバインドする必要があります
  • GUIに他のマシンからアクセスできる場合は、Syncthingの設定でGUIパスワードを設定し、TLSを有効にしてください
  • データフォルダーとここで追加するフォルダーは、PUIDPGID で書き込み可能である必要があります
  • ここで追加したフォルダーは、コンテナ内のパスにあるフォルダーとしてSyncthingに表示されるため、GUIでフォルダーを追加する際にはそのパスを選択してください
  • 同期ポートは22000のままにしてください。Syncthingが他のデバイスにそのポートへ接続するよう通知するためです