GNU/Linux >> Linux の 問題 >  >> Ubuntu

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

このチュートリアルでは、 Syncthingをインストールする方法を説明します Ubuntuで。 Syncthingは、無料のピアツーピア連続ファイル同期プログラムであり、Linux、BSD、macOS、Windows、Android、Solarisで利用可能な複数のデバイス間でファイルを同期できます。

これは、人気のある Resilio Syncのオープンソースの代替手段です。 (以前は BitTorrent Syncと呼ばれていました ) 応用。 1台のマシンでのファイルの作成、変更、または削除は、他のデバイスに自動的に複製されます。 SyncthingはファイルをNextcloudのような中央サーバーにアップロードしません 、ただし、デバイス間で直接データを交換します。すべてのデータはTLSで暗号化されています デバイス間で送信する場合。

同期機能

  • 無料でオープンソース。
  • 高速同期速度。
  • 一方向の同期をサポートします。
  • 選択的同期(パターンを無視)
  • 2つのピアが相互に接続できない場合は、リレーサーバーを使用できます。
  • LDAP認証をサポートします。

公式Debリポジトリを介してUbuntuにSyncthingをインストールする

Syncthingは、18.04BionicBeaver以降のデフォルトのUbuntuリポジトリに含まれています。ただし、最新バージョンを入手できるように、アップストリームの公式リポジトリから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

ローカルパッケージインデックスを更新し、Ubuntuにsyncthingをインストールします。

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

UbuntuSyncthingWebインターフェースへのアクセス

デフォルトでは、Syncthingサービスは127.0.0.1:8384でリッスンします。次に、Webブラウザのアドレスバーに「 127.0.0.1:8384」と入力します。 SyncthingWebインターフェイスにアクセスします。他のSyncthingデバイスを追加して、それらとフォルダーを共有できます。

SyncthingをリモートUbuntuサーバーにインストールする場合、Web UIにアクセスするには、NginxまたはApacheでリバースプロキシを設定する必要があります。これについては、このチュートリアルの後半で説明します。

デバイス間でファイルの同期を開始

Syncthingを実行している2つのデバイスがあれば、それらの間でファイルの同期を開始できます。

Syncthing Webインターフェイスで、アクションをクリックします>IDを表示 右上隅にあります。文字と数字の長い文字列であるデバイスIDが表示されます。デバイスIDでもあるQRコードは、スマートフォンでSyncthingを構成するために使用されます。

デバイスIDをコピーし、2番目のデバイスのSyncthing Webインターフェイスを開き、リモートデバイスの追加をクリックします 右下隅にあります。次に、デバイスIDを貼り付けて、デバイスに名前を付けます。 [保存]ボタンをクリックします。

これで、2番目のデバイスが最初のデバイスに接続しようとします。最初のデバイスのWebインターフェイスを更新すると、次のメッセージが表示されます。 デバイスの追加をクリックします 2番目のデバイスを最初のデバイスのデバイスリストに追加します。

これで2つのデバイスが接続されました。

Webインターフェイスの左側のペインには、デフォルトの同期フォルダー( / 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:rwx /folder/path/

:それでも問題が解決しない場合は、この記事の最後にあるトラブルシューティングのヒントをご覧ください。

共有で タブで、他のSyncthingデバイスを選択します。

Ignore Pattensで タブで、同期してはならないファイルの名前パターンを入力できます。

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

ドメイン名でUbuntuの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インターフェイスにログインします。

自己署名TLS証明書の使用方法

ドメイン名と有効なTLS証明書を使用してSyncthingWebインターフェイスにアクセスしたくない場合。自己署名証明書を使用できます。 Syncthing構成ファイルを編集します。

nano ~/.config/syncthing/config.xml

次の行を見つけます。

    <gui enabled="true" tls="false" debugging="false">
        <address>127.0.0.1:8384</address>
        <apikey>P4sYoeq2CNQRdfq33dq823dakE2</apikey>
        <theme>default</theme>

自己署名証明書を使用するには、 tls ="false"を変更するだけです。 tls ="true"へ 。また、リモートコンピューターからSyncthing Webインターフェイスにアクセスする場合は、 127.0.0.1を変更します。 0.0.0.0へ 。

ファイルを保存して閉じます。次に、Syncthingを再起動して、変更を有効にします。

sudo systemctl restart [email protected]username.service

送信専用および受信専用フォルダ

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は、Linuxファイルシステムのinotifyの制限にすぐに達するため、osmタイルファイルなどの大量の小さなファイルの同期には適していません。 2つのデバイスが両方ともLinuxを実行している場合は、 rsyncを使用できます (リモート同期)ツールは、次のように大量の小さなファイルを同期します:

rsync -aP /path/to/source/folder/  [email protected]:/path/to/destination/folder

Syncthingの複数のインスタンスの実行

異なるユーザーに属する複数の共有フォルダーがある場合は、ユーザーごとにSyncthingの複数のインスタンスを実行することをお勧めします。

sudo systemctl start [email protected]
sudo systemctl start [email protected]

Syncthingをuser1として実行し、user2に属するフォルダーを共有すると、Syncthingが実行するユーザーとファイルを作成するため、非同期/許可が拒否される問題が発生します。

各インスタンスには、一意のGUIポートと同期ポートが必要です。これらは、ホームディレクトリの下にあるユーザーのsyncthing構成ファイルで構成できます。

nano ~/.config/syncthing/config.xml

GUIポートの構成は

<address>127.0.0.1:8384</address>

デフォルトの同期ポート構成は

です。
<listenAddress>default</listenAddress>

次のように変更できます

<listenAddress>tcp://0.0.0.0:22001</listenAddress>

Syncthingインスタンスごとにサブドメインを作成したくない場合は、ドメイン名にサブディレクトリを作成できます。たとえば、SyncthingのNginxサブディレクトリ構成は次のとおりです。

 location /user2/ {
    proxy_pass http://127.0.0.1:8385/;
    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;
  }

私はuser2をサブディレクトリとして使用しています。お好きな名前をお選びいただけます。 proxy_pass http://127.0.0.1:8385/;に注意してください 、末尾のスラッシュ / が必要です。削除すると機能しなくなります。

トラブルシューティングのヒント

接続できません

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

フォルダマーカーの作成に失敗しました

/ etc /などのシステムフォルダを同期する場合 、おそらく次のエラーメッセージが表示されます:

Failed to create folder marker, read-only file system

これは、syncthing systemdサービス( / lib / systemd / system / [email protected] )には次の ProtectSystemがあります systemdフォルダー(/ usr /、/ boot /、/ etc /)での書き込み操作を禁止する変数。

ProtectSystem=full

除外を追加できるので、Syncthingはフォルダーに書き込むことができます。カスタムsystemd構成を保存するフォルダーを作成します。

sudo mkdir /etc/systemd/system/[email protected]username.service.d/

次に、このディレクトリの下にファイルを作成します。

sudo nano /etc/systemd/system/[email protected]username.service.d/permission.conf

このファイルに次の行を追加します。

[Service]
ReadWritePaths=/shared/foler/one/  /shared/foler/two/

フォルダは空のスペースで区切られます。フォルダはいくつでも追加できます。フォルダがシステムに存在している必要があります。存在していないと、Syncthingは再起動に失敗します。

ファイルを保存して閉じます。次に、systemdをリロードします。

sudo systemctl daemon-reload

そしてSyncthingを再起動します。

sudo systemctl restart [email protected]username.service

グローバル状態のフォルダサイズが不正確です

これは、フォルダを複数のデバイスと共有している場合に発生する可能性があります。デバイス1からデバイス2にフォルダーを共有するとします。デバイス2でファイルの同期が完了しておらず、デバイス2からデバイス3にフォルダーを共有すると、デバイス3に表示されるグローバルフォルダーサイズは実際のサイズよりも小さくなります。 。

フォルダの同期が停止します

Syncthingログをチェックして、同期が停止した理由を確認してください。

sudo journalctl -eu [email protected]

問題処理リクエスト

次のエラーが表示された場合は、Nginxエラーログ( /var/log/nginx/syncthing.error.log )を確認できます。 )またはApacheエラーログ( /var/log/apache/syncthing_error.log )この問題の原因を突き止めます。

Syncthing seems to be experiencing a problem processing your request. Please refresh the page or restart Syncthing if the problem persists.

私の場合、ModSecurityWebアプリケーションファイアウォールを有効にしたためです。

非同期レプリケーション

Syncthingは非同期方式を使用するため、1つのノードで行われた変更が、他のノードに複製されるまでに時間がかかることに注意してください。アプリケーションが同期遅延の影響を受けやすい場合は、ノードをマスターノードとして指定することをお勧めします。マスターノードでのみ変更を加え、スレーブノードをバックアップとして使用します。


Ubuntu
  1. Ubuntuサーバーにデスクトップ(GUI)をインストールする方法

  2. Ubuntu18.04にMySQLをインストールする方法

  3. Ubuntu18.04にMinecraftサーバーをインストールする方法

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

  2. Ubuntu20.04にNginxをインストールする方法

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

  1. Ubuntu20.04にMariaDBをインストールする方法

  2. Ubuntu14.04デスクトップにownCloudクライアントをインストールする方法

  3. UbuntuサーバーからUbuntuデスクトップをインストールする方法