GNU/Linux >> Linux の 問題 >  >> Debian

SyncthingをDebianデスクトップ/サーバーにインストールする方法

このチュートリアルでは、 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コマンドでファイルが作成されます。ファイルがすでに存在する場合は、ファイルのタイムスタンプが更新されます。


Debian
  1. Debian11にRedisサーバーをインストールする方法

  2. MySQL 8.0/5.7をDebian11/Debian10にインストールする方法

  3. MySQLサーバーをDebian9にインストールする方法

  1. Debian9にMinecraftサーバーをインストールする方法

  2. Debian 10にXrdpサーバー(リモートデスクトップ)をインストールする方法

  3. Debian8にProFTPDをインストールする方法

  1. SuiteCRMをDebian9にインストールする方法

  2. MySQL8をDebian10にインストールする方法

  3. Debian11にXFCEデスクトップをインストールする方法