ウェブサイト検索

Ubuntu 20.04にSyncthingをインストールする方法


Ubuntu 20.04にSyncthingをインストールする方法

このチュートリアルはこれらのOSバージョンのために存在します

  • Ubuntu 22.04 (ジャミー・ジェリーフィッシュ)
  • Ubuntu 20.04 (フォーカルフォッサ)

このページで

  1. 前提条件
  2. 始めに
  3. 両方のサーバーにSyncthingサーバーをインストールする
  4. 両方のサーバーにSystemdユニットファイルを作成する
  5. Syncthingウェブインターフェースにアクセスする
  6. SyncthingのためにNginxをリバースプロキシとして構成する
  7. 結論

Syncthingは、ネットワーク上の2台以上のコンピューター間でファイルを同期するために使用されるオープンソースのツールです。これはピアツーピアアーキテクチャを利用し、デバイス間で直接データを交換します。複数のデバイス間で送信されるすべてのデータはTLSで暗号化されています。Syncthingの1台のマシンでデータを作成、変更、または削除すると、それは自動的に他のサーバーに複製されます。Linux、Windows、Mac OS Xなど、すべての主要なオペレーティングシステムにインストールできます。

このガイドでは、Ubuntu 20.04にSyncthingサーバーをインストールして設定する方法を説明します。

前提条件

  • Ubuntu 20.04を実行している2台のサーバー。
  • サーバーIPにポイントされた有効なドメイン名。
  • 両方のサーバーにルートパスワードが設定されています。

始めに

まず、以下のコマンドを実行してシステムパッケージを最新バージョンに更新します:

apt-get update -y

すべてのパッケージが更新されたら、次のステップに進むことができます。

両方のサーバーにSyncthingサーバーをインストールする

デフォルトでは、SyncthingパッケージはUbuntu 20.04のデフォルトリポジトリに含まれていません。したがって、APTにSyncthingリポジトリを追加する必要があります。

最初に、次のコマンドを使用して両方のサーバーに必要な依存関係をインストールします:

apt-get install gnupg2 curl apt-transport-https -y

次に、次のコマンドを使ってリリースキーをダウンロードして追加します:

curl -s https://syncthing.net/release-key.txt | apt-key add -

次に、次のコマンドを使用してAPTにSyncthingリポジトリを追加します:

echo "deb https://apt.syncthing.net/ syncthing release" > /etc/apt/sources.list.d/syncthing.list

次に、リポジトリを更新し、以下のコマンドでSyncthingサーバーをインストールします:

apt-get update -y
apt-get install syncthing -y

インストールが完了したら、次のコマンドを使用してSyncthingのバージョンを確認してください:

syncthing --version

次の出力を得るべきです:

syncthing v1.18.0 "Fermium Flea" (go1.16.5 linux-amd64) [email  2021-06-21 20:53:50 UTC [noupgrade]

この時点で、Syncthingは両方のサーバーにインストールされています。次のステップに進むことができます。

両方のサーバーにSystemdユニットファイルを作成する

次に、Syncthingサービスを管理するためのsystemdユニットファイルを作成する必要があります。次のコマンドを使用して、両方のサーバーで作成できます:

nano /etc/systemd/system/[email 

次の行を追加してください:

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target

作業が完了したら、ファイルを保存して閉じてください。その後、設定を適用するためにsystemdデーモンを再読み込みします:

systemctl daemon-reload

次に、以下のコマンドでSyncthingサービスを開始します:

systemctl start syncthing@root

Syncthingサービスの状態を確認するには、次のコマンドを実行します。

systemctl status syncthing@root

次の出力が表示されるはずです:

? [email  - Syncthing - Open Source Continuous File Synchronization for root
     Loaded: loaded (/etc/systemd/system/[email ; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 04:40:12 UTC; 5s ago
       Docs: man:syncthing(1)
   Main PID: 2878 (syncthing)
      Tasks: 14 (limit: 2353)
     Memory: 44.2M
     CGroup: /system.slice/system-syncthing.slice/[email 
             ??2878 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0
             ??2889 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0

Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: QUIC listener ([::]:22000) starting
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or d>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Creating new HTTPS certificate
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: GUI and API listening on [::]:8384
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: My name is "node1"
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] WARNING: Syncthing should not run as a privileged or system user. Please consider using a norma>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 detected NAT type: Not behind a NAT
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 resolved external address quic://45.58.35.6:22000 (via stun.syncthin>

この時点で、Syncthingサービスは開始され、ポート8384でリッスンしています。以下のコマンドで確認できます。

ss -antpl | grep 8384

次の出力が表示されるはずです:

LISTEN    0         4096                     *:8384                   *:*        users:(("syncthing",pid=2889,fd=12))    

Syncthingウェブインターフェースにアクセスする

次に、ウェブブラウザーを開き、URL http://first-server-ip:8384 と http://first-server-ip:8384 を使用してSyncthingのウェブインターフェースにアクセスします。

次の画面が表示されるはずです:

以下のように管理者ユーザーとパスワードを定義するには、設定をクリックしてください。

ユーザー名とパスワードを入力し、保存ボタンをクリックして変更を適用してください。Syncthingのログインページにリダイレクトされます:

サインインボタンをクリックし、管理者のユーザー名とパスワードを入力してください。次の画面が表示されるはずです:

次に、両方のサーバー間でファイルを同期するために、各サーバーのデバイスIDを別のサーバーに追加する必要があります。そのためには、両方のサーバーのアクション > IDを表示ボタンをクリックしてください。次の画面が表示されるはずです:

最初のサーバーで、リモートデバイスを追加をクリックします。次の画面が表示されるはずです。

2番目のサーバーのデバイスIDを提供し、保存ボタンをクリックしてください。

二台目のサーバーで、リモートデバイスの追加をクリックしてください。次の画面が表示されるはずです:

最初のサーバーのデバイスIDを入力し、保存ボタンをクリックしてください。次の画面が表示されるはずです:

さて、同期したいフォルダーを追加し、第二のサーバーと共有する必要があります。フォルダーを追加ボタンをクリックしてください。次の画面が表示されるはずです:

フォルダラベル、フォルダーパスを入力し、共有タブをクリックしてください。次の画面が表示されるはずです:

第二のサーバーを選択し、保存ボタンをクリックしてください。次の画面が表示されるはずです:

次に、2番目のサーバーに移動し、すべてを再スキャンボタンをクリックしてください。次の画面が表示されるはずです:

追加をクリックして、最初のサーバーで共有されているバックアップフォルダーを追加します。次の画面が表示されるはずです:

今、最初のサーバーのバックアップフォルダーにファイルを作成または変更すると、それらは自動的に第二のサーバーに同期されます。

SyncthingのためにNginxをリバースプロキシとして構成する

Nginxをリバースプロキシとして設定し、ポート80を通じてSyncthingサーバーにアクセスすることもできます。

まず、次のコマンドでNginxサーバーをインストールします:

apt-get install nginx -y

次に、次のコマンドを使用してNginxのバーチャルホスト設定ファイルを作成します:

nano /etc/nginx/conf.d/syncthing.conf

次の行を追加してください:

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 -t

次の出力を得るべきです:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

次に、変更を適用するためにNginxをリロードします。

systemctl reload nginx

次のコマンドを使用してNginxのステータスを確認することもできます。

systemctl status nginx

次の出力が表示されるはずです:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 05:01:36 UTC; 21s ago
       Docs: man:nginx(8)
   Main PID: 3394 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 6.2M
     CGroup: /system.slice/nginx.service
             ??3394 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3395 nginx: worker process

Jul 09 05:01:36 node1 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 09 05:01:36 node1 systemd[1]: Started A high performance web server and a reverse proxy server.

さて、http://syncthing.example.com のURLを使用してSyncthingサーバーにアクセスできるようになりました。

結論

おめでとうございます!あなたは2台のUbuntu 20.04サーバーにSyncthingを正常にインストールおよび設定し、両方のサーバー間で同期を設定しました。このチュートリアルがサーバーのバックアップに役立つことを願っています。

関連記事: