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 で必要なポートを許可する
ファイアウォールをアクティブにしている場合は、ポート 8384
と 22000
を許可します。両方の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 は、データの制御を維持しながら複数のデバイス間でファイルを同期したいユーザーにとって最適な選択肢です。