帮助中心
如何在AlmaLinux 9上安装Syncthing

如何在AlmaLinux 9上安装Syncthing


Syncthing 是一款开源的点对点文件同步工具,用于在多台设备间安全地同步文件。与基于云的服务不同,Syncthing 直接在设备间运行,无需将数据存储在外部服务器上,从而让用户能够完全控制自己的文件和隐私。它的工作原理是在设备间进行加密通信,确保数据安全传输。Syncthing 可用于在电脑、移动设备甚至服务器之间同步文件,对于需要可靠、私密和实时文件同步的用户来说,它是一个多功能解决方案。它易于设置、跨平台,可在后台运行,只要检测到变化,就会自动同步文件。


在本指南中,您将学习如何在 AlmaLinux 9 服务器上安装 Syncthing 软件。您还将学习如何在两个 Syncthing 实例之间进行连接,以及如何在 Syncthing 中设置共享文件夹。


前提条件


开始之前,请确保具备以下条件:

  • 两台 AlmaLinux 9 机器。
  • 具有管理员权限的非 root 用户。
  • 具有许可模式的 SELinux。


下载 Syncthing 二进制文件


对于基于 RHEL 的发行版,你需要通过二进制文件手动安装 syncthing。请务必查看 syncthing 的官方 GitHub 页面,以获取 syncthing 的最新版本。


首先,运行下面的命令为系统安装 curl、wget 和 nano 编辑器软件包。

sudo dnf install curl wget nano -y




现在使用以下命令从 GitHub 仓库下载 syncthing 二进制文件。

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

下载完成后,使用下面的命令解压缩 syncthing tar.gz 文件。然后将 syncthing 二进制文件移至 /usr/bin/ 目录。


tar xvf syncthing-linux-amd64*.tar.gz
sudo mv syncthing-linux-amd64-*/syncthing /usr/bin/

最后,使用下面的命令验证 syncthing 二进制文件的位置和版本。

which syncthing
syncthing --version

根据以下输出,你可以看到 syncthing xxx 安装在 /usr/bin/syncthing。



将 syncthing 作为 Systemd 服务运行


可以手动运行 syncthing,但将 syncthing 作为 systemd 服务运行更为方便。你可以使用 systemctl 工具控制 syncthing 服务。


运行以下 nano 编辑器命令创建新的 systemd 服务文件 /etc/systemd/system/syncthing@.service。

sudo nano /etc/systemd/system/syncthing@.service

在文件中插入以下配置

[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

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

[Install]
WantedBy=multi-user.target

保存文件,完成后退出编辑器。

最后,也是最重要的一点,使用以下命令重新加载 systemd 管理器,将更改应用到系统中。

sudo systemctl daemon-reload


设置 Firewalld


既然已经将 syncthing 配置为 systemd 服务,就需要通过 firewalld 为 syncthing 打开端口。默认情况下,firewalld 包含同步应用程序,你可以轻松启用它。


执行以下命令在 firewalld 上添加并启用 syncthing 和 syncthing-gui 服务。

sudo firewall-cmd --zone=public --add-service=syncthing --permanent
sudo firewall-cmd --zone=public --add-service=syncthing-gui --permanent

现在重新加载 firewalld 以使其生效,然后验证 firewalld 上已启用的服务列表。

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

从下面的输出中可以看到,同步配置文件已启用。



初始化同步节点


在开始连接同步实例之前,必须在系统上按用户初始化同步。在本例中,我们将使用两台带有不同用户的 Almalinux 服务器:

  • 节点 1 服务器,用户为 tom
  • 节点 2 服务器,用户为 jerry

现在,运行以下命令启动同步服务并初始化同步安装。请务必将用户 tom 更改为您的用户名。

sudo systemctl start syncthing@tom.service


同步服务启动后,将创建新的配置目录 ~/.local/state/synching 和 Sync 目录。使用下面的命令进行验证。

ls -ah ~/Sync
ls -ah ~/.local/state/syncthing/


然后,使用下面的 nano 编辑器命令打开同步配置 ~/.local/state/syncthing/config.xml。

sudo nano ~/.local/state/syncthing/config.xml

在 “gui ”部分,将选项 “tls=false ”更改为 “tls=true”,以启用同步的安全访问。

 <gui enabled="true" tls="true" debugging="false" sendBasicAuthPrompt="false">
<address>192.168.10.41:8384</address>
<apikey>GENERATED-API-KEY</apikey>
<theme>default</theme>
</gui>

保存文件,完成后退出编辑器。


然后,运行下面的命令重启同步并应用更改。

sudo systemctl restart syncthing@tom.service

接下来,使用下面的命令启用并验证同步服务。确保输出 enabled and active(running),以确认同步服务处于运行状态。

sudo systemctl enable syncthing@tom.service
sudo systemctl status syncthing@tom.service


设置同步的用户和密码


既然已经启动并初始化了同步,下一步就是为同步实例配置用户身份验证。


开始之前,请运行下面的 ss 命令确保 8384 端口处于 LISTEN 状态。

ss -tulpn | grep 8384

在下面的输出中,可以看到 syncthing 使用了 8384 端口。



打开浏览器,访问服务器 IP 地址和 8384 端口(即:https://192.168.5.15:8384/)。如果安装成功,你会看到下面的欢迎页面。


点击 “设置 ”菜单,设置用户身份验证。



单击 GUI 选项卡,然后输入管理用户和密码。确保选中 “为 GUI 使用 HTTPS ”选项。按保存确认更改。




现在你将被重定向到同步登录页面。在那里输入用户名和密码,然后点击登录。




如果配置成功,你将看到如下所示的 syncthing 面板:



下面是 node2 的同步仪表盘。



连接同步实例


至此,您已经在两台 Almalinux 服务器上完成了同步功能的安装。现在是连接两个同步实例的时候了,这可以通过网络管理面板完成。


在 node1 控制面板上,单击 “操作”(Action)并选择 “显示 ID”(Show ID),以获取节点 ID 的详细信息。



您可以看到 node1 实例的 ID 和 qrcode。复制 node1 ID,连接到 node2 实例时会用到它。



现在移动到 node2 面板,在远程设备部分,单击添加远程设备。



粘贴节点 1 的 ID,并输入名称 node1。



接下来,移动到 “共享 ”选项卡。在 “非共享文件夹 ”部分,选中 “默认文件夹 ”选项,将目标文件夹共享给节点 1。


此外,请务必选中自动接受选项,以自动创建或共享 node1 在默认路径中公布的文件夹。




移回节点 1 控制面板,您应该会看到来自节点 2 的请求信息。单击添加设备确认。



出现提示时,单击保存确认。此外,请务必检查节点 2 的设备 ID。



接下来,您将收到另一个通知,即节点 2 实例将共享文件夹 Default Folder,单击 Share(共享)确认。



进程结束后,您可以在节点 1 上看到以下信息:


路径为 /home/tom/Sync 的默认文件夹已与 node2 共享。

在远程设备部分,可以看到 node2 的状态为 Up To Date。



现在查看节点 2 的仪表板,应该会看到类似的信息,即默认文件夹与节点 1 共享。此外,在远程设备部分,还可以看到节点 1 的状态为 “已更新”。



测试文件同步


至此,您已经完成了两个同步实例之间共享文件夹的配置。现在,让我们尝试在共享目录下创建新文件,以验证两个同步实例之间的同步情况。


在节点 1 服务器上,移动到 ~/Sync 目录,执行以下命令创建新文件。


cd ~/Sync/
touch file{1..50}.txt
ls -ah


现在移动到 node2 服务器,进入 ~/Sync 目录。然后,验证 ~/Sync 目录中的列表文件。

cd ~/Sync
ls -ah

如果同步成功,你应该能看到从 node1 服务器创建的文件。



至此,同步安装成功。


结论


恭喜你 你已经在 AlmaLinux 9 服务器上成功安装了同步。你还学会了如何在同步实例之间进行连接、设置共享文件夹以及验证同步实例的同步性。


现在,你可以添加更多设备并连接到当前实例,在多个设备间实现文件共享和同步。

文章相关标签: AlmaLinux 9 Syncthing
购物车