ウェブサイト検索

Rocky 9/CentOS 9/Alma 9 に Syncthing をインストールする方法 |


Syncthing は、ネットワーク内の複数のデバイス間でファイルとフォルダーを安全に同期するために使用される、オープンソースのクロスプラットフォームのピアツーピア同期ソフトウェアです。 Syncthing は、Google Drive、Dropbox などのクラウドベースのファイル同期サービスに代わる、信頼性が高く安全な代替手段と考えられています。 Syncthing は、中央サーバーを必要とせずに、暗号化されたチャネルを介してデバイスが直接相互に通信できるようにする分散アーキテクチャを利用しています。ユーザーは、ファイルの保存にサードパーティのサービスに依存せずに、自分のデータを完全に制御できます。

Syncthing をインストールすると、ファイルの同期ステータスに関する詳細情報を提供する Web ベースの GUI のほか、サービスの開始/停止、デバイスの検出、新しいデバイスの追加、LDAP 統合などの詳細な設定などの詳細オプションを構成するためのツールが付属します。 Syncthing 同期ツールの主な機能は次のとおりです。

  • 暗号化: デバイス間のすべての通信は TLS を使用して暗号化され、不正なアクセスからデータが保護されます。
  • クロスプラットフォームのサポート: Syncthing は、Linux、Windows、macOS、Android、FreeBSD などの幅広いプラットフォームで実行できます。
  • 分散化: Syncthing はピアツーピア アーキテクチャで動作し、中央サーバーが不要になります。ユーザーは自分のデータを制御できます
  • バージョン管理: 複数の変更が同時に行われた場合でも、ファイルに加えられた変更がデバイス間で正しく反映されるようにするための、高度なバージョン管理システムが備わっています。
  • 選択的な同期: ユーザーはデバイス間で同期するフォルダーを選択できるため、データをより細かく制御できます。
  • ウェブベースの GUI: Syncthing には、使いやすいウェブベースの GUI が含まれています。

Rocky Linux 9/CentOS 9/AlmaLinux 9 に Syncthing をインストールする

Rocky 9、CentOS 9、または AlmaLinux 9 システムに Syncthing をインストールして設定する手順は次のとおりです。

ステップ 1: Syncthing をダウンロードしてインストールする

Syncthing の最新の安定リリースは、Github リリース ページから確認できます。 wgetまたはcurlを使用してダウンロードします

curl -s https://api.github.com/repos/syncthing/syncthing/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -

次に、tar を使用してダウンロードしたファイルを抽出します。

tar xvf syncthing-linux-amd64*.tar.gz

次に、バイナリ ファイルを /usr/bin ディレクトリにコピーします。

 sudo cp syncthing-linux-amd64-*/syncthing /usr/bin/

バージョンを確認して、インストールが成功したことを確認します。

$ syncthing  --version
syncthing v1.23.7 "Fermium Flea" (go1.20.7 linux-amd64) [email  2023-07-31 03:45:37 UTC

ステップ 2: Syncthing systemd ユニット ファイルを作成する

Syncthing サービスは、それをサポートするシステム上で systemd を使用して管理できます。そのためのサービスユニットを作成する必要があります。

syncthing という名前のユーザー アカウントを作成します。

sudo useradd -m syncthing

ユーザーをwheelグループに追加できます。

sudo usermod -aG wheel syncthing

強力なパスワードを設定してください。

$ sudo passwd syncthing
Changing password for user syncthing.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

systemdユニットファイルを作成します。

$  sudo vi /etc/systemd/system/[email 
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
StartLimitIntervalSec=60
StartLimitBurst=4

[Service]
User=%i
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

# Elevated permissions to sync ownership (disabled by default),
# see https://docs.syncthing.net/advanced/folder-sync-ownership
#AmbientCapabilities=CAP_CHOWN CAP_FOWNER

[Install]
WantedBy=multi-user.target

変更を有効にするには、systemd をリロードします。

sudo systemctl daemon-reload

サービスを開始して有効にします。

sudo systemctl start syncthing@syncthing
sudo systemctl enable syncthing@syncthing

ステータスをチェックして、実行中であることを確認します。

$ systemctl status  syncthing@syncthing
 [email  - Syncthing - Open Source Continuous File Synchronization for syncthing
     Loaded: loaded (/etc/systemd/system/sync[email ; disabled; vendor preset: disabled)
     Active: active (running) since Thu 2023-03-02 17:41:05 UTC; 15s ago
       Docs: man:syncthing(1)
   Main PID: 10605 (syncthing)
      Tasks: 16 (limit: 24167)
     Memory: 28.3M
        CPU: 1.682s
     CGroup: /system.slice/system-syncthing.slice/[email 
             ├─10605 /usr/bin/syncthing serve --no-browser --no-restart --logflags=0
             └─10612 /usr/bin/syncthing serve --no-browser --no-restart --logflags=0

Mar 02 17:41:06 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or directory
Mar 02 17:41:06 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: Creating new HTTPS certificate
Mar 02 17:41:06 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: GUI and API listening on 127.0.0.1:8384
Mar 02 17:41:06 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
Mar 02 17:41:06 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: My name is "rocky9.mylab.io"
Mar 02 17:41:06 rocky9.mylab.io syncthing[10605]: [7N43J] WARNING: Syncthing should not run as a privileged or system user. Please consider using a normal user account.
Mar 02 17:41:06 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
Mar 02 17:41:07 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: quic://0.0.0.0:22000 detected NAT type: Not behind a NAT
Mar 02 17:41:07 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: quic://0.0.0.0:22000 resolved external address quic://65.108.59.32:22000 (via stun.syncthing.net:3478)
Mar 02 17:41:16 rocky9.mylab.io syncthing[10605]: [7N43J] INFO: Detected 0 NAT services

すべてのインターフェイスでリッスンを許可するには、次を使用します。

ExecStart=/usr/bin/syncthing --no-browser --gui-address="0.0.0.0:8384" --no-restart --logflags=0

ステップ 3: データの同期に別のパーティションを使用する

ファイル同期用に /dev/sdb を設定します。

$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   50G  0 disk
├─sda1        8:1    0  600M  0 part /boot/efi
├─sda2        8:2    0    1G  0 part /boot
└─sda3        8:3    0 48.4G  0 part
  ├─rl-root 253:0    0 43.4G  0 lvm  /
  └─rl-swap 253:1    0    5G  0 lvm  [SWAP]
sdb           8:16   0  200G  0 disk

RAW ディスク /dev/sdX にパーティション テーブルを作成します。

sudo parted -s -a optimal -- /dev/sdX mklabel gpt
sudo parted -s -a optimal -- /dev/sdX mkpart primary 0% 100%
sudo parted -s -- /dev/sdX align-check optimal 1

その上にファイルシステムを作成します。この例ではLVMを使用しています。

sudo pvcreate /dev/sdX1
sudo vgcreate data /dev/sdX1
sudo lvcreate -n syncthing -l  +100%FREE data
sudo mkfs.xfs /dev/data/syncthing
echo "/dev/data/syncthing /home/syncthing/data xfs defaults 0 0" | sudo tee -a /etc/fstab

マウントポイントの作成

sudo mkdir /home/syncthing/data

実行時にパーティションをマウントして、機能することを検証します。

sudo mount -a

取り付け作業を確認します。

$ df -hT /home/syncthing/data
Filesystem                 Type  Size  Used Avail Use% Mounted on
/dev/mapper/data-syncthing xfs   200G   44G  157G  22% /home/syncthing/data

データ ディレクトリに正しいアクセス許可を設定します。

sudo chown syncthing:syncthing /home/syncthing/data

動作することを確認します。

$ ls -lhd /home/syncthing/*
drwxr-xr-x. 2 syncthing syncthing  6 Feb 28 00:49 /home/syncthing/data
drwxr-xr-x. 3 syncthing syncthing 23 Feb 28 00:28 /home/syncthing/Sync

ステップ 4: firewalld で必要なポートを許可する

ファイアウォールをアクティブにしている場合は、ポート 838422000 を許可します。両方のTCP

sudo firewall-cmd --add-port={8384,22000}/tcp --zone=public --permanent
sudo firewall-cmd --reload

次を使用して、許可されているすべてのポートをリストできます。

firewall-cmd --list-all

ステップ 5: Syncthing Web UI にアクセスする

サービスが開始されると、ポート 8384 で Syncthing 管理 GUI にアクセスできるようになります。 https://localhost_or_ServerIP:8384/ のリンクを開きます。

設定」をクリックして、管理者ユーザーのパスワードを設定します。

ユーザー名 admin と上記で設定したパスワードを使用してログインしてテストします。

次回の記事では、Syncthing を使用して複数のデバイス間でファイルとフォルダーを同期するプロセスについて説明します。

結論

Syncthing は、安全かつ分散化されるように設計された強力で多用途のファイル同期ツールです。 Syncthing は、使用するにはサブスクリプションとインターネット アクセスが必要なクラウドベースのファイル同期サービスの優れた代替手段です。クロスプラットフォームのサポート、洗練されたバージョン管理システム、使いやすい Web ベースの GUI を備えた Syncthing は、データの制御を維持しながら複数のデバイス間でファイルを同期したいユーザーにとって最適な選択肢です。

関連記事: