このチュートリアルでは、 Syncthingをインストールする方法を説明します Debianで。 Syncthingは、無料のピアツーピア連続ファイル同期プログラムであり、Linux、BSD、macOS、Windows、Android、Solarisで利用可能な複数のデバイス間でファイルを同期できます。
これは、人気のある Resilio Syncのオープンソースの代替手段です。 (以前は BitTorrent Syncと呼ばれていました ) 応用。 1台のマシンでのファイルの作成、変更、または削除は、他のデバイスに自動的に複製されます。 SyncthingはファイルをNextcloudのような中央サーバーにアップロードしません 、ただし、デバイス間で直接データを交換します。すべてのデータはTLSで暗号化されています デバイス間で送信する場合。
公式Debリポジトリを介してDebianにSyncthingをインストールする
curl
を使用する GPGキーをダウンロードしてから、 apt-key
を使用してキーをインポートします 。
sudo apt-get install curl curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
OK
が表示された場合 ターミナルでは、GPGキーが正常にインポートされたことを意味します。次に、次のコマンドを使用して公式のdebリポジトリを追加します。
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
このリポジトリはhttpsを使用しているため、 apt-transport-https
をインストールする必要があります パッケージなので、APTパッケージマネージャーはこのリポジトリとのhttps接続を確立できます。
sudo apt-get install apt-transport-https
ローカルパッケージインデックスを更新し、SyncthingをDebianにインストールします。
sudo apt-get update sudo apt-get install syncthing
Systemdを使用してSyncthingをシステムサービスとして設定する
公式のSyncthingdebパッケージには、必要なsystemdサービスファイルが付属しています。 / lib / systemd / system /
の下 ディレクトリには、 [email protected]
があります。 ファイル。以下のコマンドを実行して、同期を有効にして起動時に自動起動します。 username
を置き換えます 実際のユーザー名で。
sudo systemctl enable [email protected]username.service
上記のコマンドは、 [email protected]
を指すシンボリックリンクを作成します ファイル。
Created symlink from /etc/systemd/system/multi-user.target.wants/[email protected] to /lib/systemd/system/[email protected]
これで、次のコマンドでSyncthingサービスを開始できます。
sudo systemctl start [email protected]username.service
ステータスを確認する
systemctl status [email protected]username.service
出力:
ヒント:上記のコマンドがすぐに終了しない場合は、 Qを押してください ターミナルの制御を取り戻すため。
Syncthingの自動起動が有効になっていて、実行されていることがわかります。
syncthing systemdサービスは、/home/username/.config/syncthing/
の下に構成ファイルを作成します およびフォルダ/home / username / Sync
デフォルトの同期フォルダとして。メインの設定ファイルは/home/username/.config/syncthing/config.xml
です。 。
他のOSにSyncthingをインストールする
Syncthingのダウンロードページに移動し、Windows、macOS、BSD、Androidなどの他のオペレーティングシステムにSyncthingをインストールします。
ファイアウォールでポート22000を開く
Syncthingはポート22000を使用してピアと通信します。コンピューターまたはサーバーでUFWファイアウォールが有効になっている場合は、次のコマンドでポート22000を許可する必要があります。
sudo ufw allow 22000/tcp
DebianSyncthingWebインターフェースへのアクセス
デフォルトでは、Syncthingサービスは127.0.0.1:8384でリッスンします。次に、Webブラウザのアドレスバーに「 127.0.0.1:8384
」と入力します。 SyncthingWebインターフェイスにアクセスします。他のSyncthingデバイスを追加して、それらとフォルダーを共有できます。
SyncthingをリモートDebianサーバーにインストールする場合、構成ファイルを編集することでSyncthingWebインターフェースへのリモートアクセスを有効にできます。
nano /home/username/.config/syncthing/config.xml
次の2行を見つけます。
<gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address>
tls ="false"
を変更します tls ="true"
へ 、したがって、HTTPトラフィックは暗号化されます。そして、 127.0.0.1
を変更します DebianサーバーのパブリックIPアドレスに。ファイルを保存して閉じます。変更を有効にするには、Syncthingを再起動します。
sudo systemctl start [email protected]username.service
ここで、 server-ip-address:8384
と入力します。 WebブラウザでSyncthingWebインターフェイスにアクセスします。明らかに、Debianサーバーの実際のIPアドレスを使用する必要があります。 SyncthingWebインターフェイスを保護するためにユーザー名とパスワードを設定するように求められます。
Web UIにアクセスするために、NginxまたはApacheでリバースプロキシを設定することもできます。これについては、このチュートリアルの後半で説明します。
デバイス間でファイルの同期を開始
Syncthingを実行している2つのデバイスがあれば、それらの間でファイルの同期を開始できます。
Syncthing Webインターフェイスで、アクションをクリックします>IDを表示 右上隅にあります。文字と数字の長い文字列であるデバイスIDが表示されます。デバイスIDでもあるQRコードは、スマートフォンでSyncthingを構成するために使用されます。
デバイスIDをコピーし、2番目のデバイスのSyncthing Webインターフェイスを開き、リモートデバイスの追加をクリックします 右下隅にあります。次に、デバイスIDを貼り付けて、デバイスに名前を付けます。 [保存]ボタンをクリックします。
これで、2番目のデバイスが最初のデバイスに接続しようとします。最初のデバイスのWebインターフェイスを更新すると、次のメッセージが表示されます。 デバイスの追加をクリックします 2番目のデバイスを最初のデバイスのデバイスリストに追加します。
これで2つのデバイスが接続されました。
Webインターフェイスの左側のペインの1つは、デフォルトの同期フォルダー( / home / username / Sync
)です。 )。 フォルダの追加
をクリックします ボタンをクリックして、新しいフォルダを追加します。このフォルダにわかりやすいラベルを付けて、フォルダのパスを設定します。
Syncthingは独自のユーザーアカウントとして実行されるため、共有フォルダーへの書き込み権限が必要です。フォルダの共有中に次のエラーメッセージが表示された場合は、そのフォルダへの書き込み権限がないことを意味します。
2020-06-21 20:05:49: Failed to create folder marker: mkdir .stfolder: read-only file system
setfacl
を使用して書き込み権限を付与できます 。
sudo apt install acl
sudo setfacl -R -m u:username:rx /folder/path/
共有
で タブで、他のSyncthingデバイスを選択します。
Advanced
タブで、フォルダタイプ、再スキャン間隔などを選択できます。
[保存]ボタンをクリックして同期を開始します。他のデバイスのWebインターフェイスにメッセージが表示されます。 追加をクリックします ファイルを受信します。
これで、2つのデバイスがファイルを同期しています。右側には、ダウンロードレート、アップロードレート、ローカルフォルダのサイズなどが表示されます。
リバースプロキシの設定
127.0.0.1:8384でリッスンするため、SyncthingWebインターフェイスは同じコンピューターからの接続でのみ使用できます。リモートコンピューターからSyncthingWebインターフェイスにアクセスできるようにするために、SyncthingwithNginxまたはApacheのリバースプロキシを設定できます。
Nginx
Nginxは、非常に人気のあるWebサーバーおよびリバースプロキシです。 Nginxを使用する場合は、次のコマンドを実行してインストールします。
sudo apt install nginx
次に、サーバー構成ファイルを作成します。
sudo nano /etc/nginx/conf.d/syncthing.conf
このファイルに次のコンテンツを追加します。 syncthing.example.com
を置き換えます ご希望のドメイン名で。このサブドメインのDNSAレコードも追加する必要があります。実際のドメイン名をお持ちでない場合は、NameCheapにアクセスして購入することをお勧めします。価格は安く、whoisのプライバシー保護は一生無料です。
server { listen 80; server_name syncthing.example.com; access_log /var/log/nginx/syncthing.access.log; error_log /var/log/nginx/syncthing.error.log; location / { proxy_pass http://127.0.0.1:8384; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
ファイルを保存して閉じます。 Nginx構成をテストし、Nginxをリロードします。
sudo nginx -t sudo systemctl reload nginx
ドメイン名でDebianのIPアドレスを指定したら、ブラウザのアドレスバーにドメイン名を入力すると、SyncthingWebインターフェイスが表示されます。
ブラウザがSyncthingWebインターフェイスに接続できない場合は、ファイアウォールでポート80を開く必要があります。たとえば、UFWを使用する場合は、次のコマンドを実行します。
sudo ufw allow 80/tcp
Apache
Apacheは、リバースプロキシとしても使用できる有名なWebサーバーです。 NginxよりもApacheを使用する場合は、次のコマンドを使用してインストールします。
sudo apt install apache2
Apacheを起動し、自動起動を有効にします。
sudo systemctl start apache2 sudo systemctl enable apache2
Apacheをリバースプロキシとして使用するには、 proxy
を有効にする必要があります モジュールとヘッダーモジュール。
sudo a2enmod proxy proxy_http headers proxy_wstunnel
次に、Syncthing用の仮想ホストファイルを作成します。
sudo nano /etc/apache2/sites-available/syncthing.conf
次の行をコピーしてファイルに貼り付けます。 syncthing.example.com
を置き換えます あなたの本当のドメイン名で。このサブドメインのDNSAレコードも追加する必要があります。実際のドメイン名をお持ちでない場合は、NameCheapにアクセスして購入することをお勧めします。価格は安く、whoisのプライバシー保護は一生無料です。
<VirtualHost *:80> ServerName syncthing.example.com ErrorDocument 404 /404.html ProxyPass / http://127.0.0.1:8384/ ProxyPassReverse / http://127.0.0.1:8384/ ErrorLog ${APACHE_LOG_DIR}/syncthing_error.log CustomLog ${APACHE_LOG_DIR}/syncthing_access.log combined </VirtualHost>
ファイルを保存して閉じます。次に、この仮想ホストを有効にします。
sudo a2ensite syncthing.conf
Apacheを再起動します
sudo systemctl restart apache2
これで、 syncthing.example.com
を介してWebUIにアクセスできます。 。
ブラウザがSyncthingWebインターフェイスに接続できない場合は、ファイアウォールでポート80を開く必要があります。たとえば、UFWを使用する場合は、次のコマンドを実行します。
sudo ufw allow 80/tcp
SyncthingWebUIをHTTPSで保護する
ドメイン名を介してSyncthingWebUIにアクセスしたときにHTTPトラフィックを暗号化するには、Let’sEncryptから発行された無料のTLS証明書をインストールしてHTTPSを有効にします。まず、ファイアウォールでポート443を開きます。
sudo ufw allow 443/tcp
次に、次のコマンドを実行してLet’s Encryptクライアント(certbot)をインストールします。
sudo apt install certbot
Nginxを使用する場合は、CertbotNginxプラグインもインストールする必要があります。
sudo apt install python3-certbot-nginx
次に、次のコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com
Apacheを使用する場合は、CertbotApacheプラグインをインストールしてください。
sudo apt install python3-certbot-apache
そして、このコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com
どこ
-
-nginx
:nginxプラグインを使用してください。 -
-apache
:Apacheプラグインを使用してください。 -
-agree-tos
:利用規約に同意します。 -リダイレクト
:301リダイレクトでHTTPSを強制します。-
-hsts
:すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。ドメインに常にTLSを使用するようにブラウザを強制します。 SSL/TLSストリッピングから防御します。 -
-staple-ocsp
:OCSPステープリングを有効にします。有効なOCSP応答は、TLS中にサーバーが提供する証明書にホチキス止めされます。
これで、証明書が取得され、自動的にインストールされます。
Syncthing Web GUIを更新すると、HTTP接続がHTTPSセキュア接続に自動的にリダイレクトされます。
ユーザー認証を有効にする
デフォルトでは、リバースプロキシが設定された後、誰でもSyncthingWebインターフェイスにアクセスできます。ユーザー認証を有効にしてアクセスを制限できます。 アクションをクリックします 右上隅のボタンをクリックし、[設定]を選択します ->GUI。
GUI認証ユーザーにユーザー名を入力します フィールドで、GUI認証パスワードフィールドにパスワードを入力します 。次に、設定を保存します。
GUIにHTTPSを使用するにチェックマークを付ける必要はないことに注意してください ボックス。Syncthingが自己署名証明書を使用できるようにします。主流のWebブラウザによって信頼されている有効な証明書をApache/Nginxにすでにインストールしています。
変更を保存したら、Syncthing systemdサービスを再起動します。そうしないと、ページの再読み込み時に502badgatewayエラーが表示される場合があります。
sudo systemctl restart [email protected]username.service
次に、新しいユーザー名とパスワードを使用してSyncthingWebインターフェイスにログインします。
送信専用および受信専用フォルダ
Syncthingでフォルダを共有する場合は、[詳細設定]タブに移動して、次の3つのフォルダタイプのいずれかを選択できます。
- 送受信(デフォルト)
- 送信のみ
- 受信のみ
送信専用または受信専用を選択することをお勧めします。たとえば、A、B、Cの3台のコンピューターがあり、コンピューターAとBのフォルダーをコンピューターCの1つのフォルダーに集約する場合は、フォルダーの種類をコンピューターCの受信専用に設定できます。このようにして、コンピューターCはすべてのファイルを1つのフォルダーに入れます。コンピューターAとBにはまだ元のファイルがあります。これ以上でもそれ以下でもありません。
コンピューターCで同じフォルダーパスを使用すると、Syncthingは「このパスは既存のフォルダーのサブディレクトリです」と警告する場合があります。受信専用フォルダがあるため、この警告は無視してかまいません。フォルダ内の既存のファイルは削除されません。
リレーサーバーを介した同期
2つのSyncthingインスタンスが相互に接続できない場合、Syncthingはリレーサーバーを使用してファイルを転送しようとします。
それらが相互に接続できない一般的な理由は、それらの1つがNATデバイスの背後にあり、ポート転送を構成しなかったことです。ポート転送を構成すると、リレーサーバーを無効にできます。方法は次のとおりです。 編集コード>をクリックします ボタンをクリックして、
Advanced
を選択します タブで、アドレスを dynamic
から変更します tcp:// ip-address:22000
へ 。もちろん、実際のIPアドレスを使用する必要があります。
トラブルシューティング
Syncthingインスタンスが相互に接続できない場合は、 ss
を使用できます (ソケット統計)SyncthingがTCPポート22000でリッスンしているかどうかを確認するユーティリティ。
sudo ss -lnpt | grep syncthing
下のスクリーンショットからわかるように、私のSyncthingはポート8384(Webインターフェイス)と22000(ピアツーピア接続)でリッスンしています。
そうでない場合は、構成ファイルを編集できます。
nano ~/.config/syncthing/config.xml
次の行を見つけます。
<listenAddress>default</listenAddress>
default
を変更します tcp:// your-IP-address
へ 。
<listenAddress>tcp://12.34.56.78</listenAddress>
ファイルを保存して閉じます。次に、Syncthingを再起動します。
sudo systemctl restart [email protected]username.service
.stfolerファイルがありません
.stfoler
Syncthingが機能するにはファイルが必要です。これは空のファイルです。何も追加する必要はありません。 .stfolder
の場合 同期フォルダの下にファイルがない場合、同期は停止します。次のCronジョブを作成して、ファイルを自動的に作成できます。
@hourly touch /path/to/sync/folder/.stfolder
ファイルが見つからない場合は、touchコマンドでファイルが作成されます。ファイルがすでに存在する場合は、ファイルのタイムスタンプが更新されます。