本教程适用于以下操作系统版本
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
本页内容
- 先决条件
- 添加 Syncthing 软件源
- 安装 Syncthing
- 配置防火墙
- 初始化 Syncthing 实例
- 连接两个 Syncthing 实例
- 使用 Syncthing 同步目录
- Syncthing 实例之间的文件同步
- 总结
Syncthing 是一款安全且开源的多平台文件同步程序,支持 Windows、macOS、Linux、Android、Solaris、Darwin 和 BSD 等平台。它是一个去中心化的点对点(P2P)文件同步工具,允许你在本地网络的设备之间或通过互联网在远程设备之间同步文件。
在本教程中,我将向你展示如何在 Ubuntu 22.04 服务器上安装 Syncthing。随后你将学习如何在 Syncthing 实例之间建立连接、设置目录同步并检查同步状态。
先决条件
要开始本教程,你需要具备以下条件:
- 两台 Ubuntu 22.04 机器 —— 在本示例中,我们将使用两台 Ubuntu 服务器 server1 和 server2。
- 一个具有管理员权限的非 root 用户。
添加 Syncthing 软件源
Syncthing 有多种安装方式,你可以通过二进制文件手动安装,也可以通过 Ubuntu 的 APT 安装。在本示例中,你将通过向两台 Ubuntu 机器添加官方软件源,使用 APT 安装 syncthing。
首先,执行以下命令,在你的 Ubuntu 系统上安装一些基础软件包。
sudo apt install gnupg2 curl apt-transport-https -y

现在,将 syncthing 的 GPG 密钥和软件源添加到你的两台 Ubuntu 系统中。在本示例中,你将通过 APT 软件源安装最新版本的 Syncthing。
curl -fsSL https://syncthing.net/release-key.txt | \
sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/syncthing.gpg
echo "deb https://apt.syncthing.net/ syncthing release" | \
sudo tee /etc/apt/sources.list.d/syncthing.list

然后,使用以下命令更新并刷新你的 Ubuntu 软件源。
sudo apt update
当你看到 syncthing 软件源已可用时,就可以继续了。

安装 Syncthing
既然你已经在两台 Ubuntu 机器上添加了 syncthing 软件源,下一步就是在两台机器上安装它,并将其配置为以 systemd 服务方式运行。同时,请确保两台机器上都有一个用于运行 syncthing 的非 root 用户。
要安装 syncthing,运行以下 apt 命令。输入 y 并按回车键继续安装。
sudo apt install syncthing

安装完成后,按如下方式验证 syncthing 版本:
syncthing --version
syncthing -h
在以下输出中,你应该能看到已安装 syncthing 1.26。

既然你已经安装了 syncthing,应该按用户来启动它。在本示例中,我们将使用 server1 上的用户 alice,以及 server2 上的用户 bob。
使用以下命令登录到你的用户。
su - alice
然后,使用如下命令为用户 alice 启动并启用 syncthing 服务:
sudo systemctl start
[email protected]
sudo systemctl enable
[email protected]
当系统提示时,请务必输入你的密码以获取 root 权限:

现在通过以下命令验证 syncthing 服务,确保其正在运行。
sudo systemctl status
[email protected]
你应该会看到用户 alice 的 syncthing 服务正在运行。同时,请确保你两台服务器上的 syncthing 服务都在运行。

配置防火墙
在本指南中,你将在两台 Ubuntu 机器上启用防火墙。在 Ubuntu 上,你可以使用 UFW(Uncomplicated Firewall,简单防火墙),而默认情况下 syncthing 也提供了一个 UFW 应用配置文件,因此你可以轻松启用它。
运行以下命令,将 syncthing 和 syncthing-gui 配置文件添加到 UFW。
sudo ufw allow syncthing
sudo ufw allow syncthing-gui
现在添加 OpenSSH 配置文件,然后使用以下命令启动并启用 UFW。输入 y 确认该操作。
sudo ufw allow OpenSSH
sudo ufw enable
完成后,你将看到如下输出。

接下来,使用以下命令验证 UFW 上已启用的规则和配置文件。
sudo ufw status verbose
确保 syncthing 和 syncthing-gui 都已添加到 UFW。

初始化 Syncthing 实例
既然你已经安装好 Syncthing 并配置好 UFW,就可以开始初始化你的安装了。在此步骤中,你将设置 syncthing 在启用 HTTPS 的本地 IP 地址上运行,并为 syncthing 设置用户认证。
默认情况下,syncthing 运行在 localhost 上。如果你想让 syncthing 运行在本地 IP 地址上,请修改 syncthing 的配置文件 ~/.config/syncthing/conf.xml。
使用以下 nano 编辑器命令打开 ~/.config/syncthing/conf.xml 文件。
nano ~/.config/syncthing/conf.xml file
在 '
<gui enabled="true" tls="true" debugging="false" sendBasicAuthPrompt="false"> <address>192.168.5.30:8384</address> <apikey>GENERATED-API-KEY</apikey> <theme>default</theme> </gui>
完成后保存并关闭文件。
现在运行以下命令以重启 syncthing 服务。
sudo systemctl restart
[email protected]
打开你的网页浏览器,通过服务器 IP 地址和端口 8384 访问 syncthing(即:https://192.168.5.30:8384/ )。
如果你的安装成功,你应该会看到如下页面:
点击 Settings(设置)以配置 syncthing。

在 GUI 选项卡中,修改你的用户和密码,然后点击 Save(保存)。

配置新密码后,系统会提示你进行 syncthing 身份认证。
输入你的用户名和密码,然后点击 Log In(登录)。

如果你输入了正确的用户和密码,你应该会看到如下的 syncthing 仪表盘:

以下是配置好用户和密码后,server2 的 syncthing 仪表盘。

连接两个 Syncthing 实例
在两台 Ubuntu 机器上都配置好 Syncthing 后,你将进行连接,以便在这些机器之间同步文件。为此,你必须通过 GUI 验证两台机器。
在 server1 上,点击右上角的 Action(操作)按钮,然后选择 Show ID(显示 ID)。

复制 server1 的设备 ID。syncthing 的设备 ID 是在启动时自动生成的。此外,你也可以使用二维码在 syncthing 实例之间建立连接,例如电脑与 Android 手机之间。

切换到 server2,点击 Add Remote Device(添加远程设备)以添加一个新的 syncthing 实例。

粘贴 server1 的设备 ID,将名称输入为 server1,然后点击 Save(保存)确认。

接下来,回到 server1 的仪表盘,你会看到 server2 想要连接的信息。点击 Add Device(添加设备)来添加 server1。

现在会弹出新窗口,请核对 server2 的设备 ID,然后点击 Save(保存)。

最后,进入 syncthing 仪表盘,切换到 Remote Devices(远程设备)部分。如果过程成功,你应该会看到 server2 的状态为 connected(已连接)。

另一方面,当你在 server2 上查看时,你应该会看到 server1 已 connected(已连接)。

使用 Syncthing 同步目录
到目前为止,server1 和 server2 已通过 syncthing 连接。现在,你将学习如何在 syncthing 实例之间共享目录/文件夹并同步文件。
在 server1 的仪表盘上,查看 Folders(文件夹)部分,你会找到 Default Folder(默认文件夹),其路径目录为 /home/alice/Sync,状态为 Unshared(未共享)。
点击 Edit(编辑)以共享 Default Folder(默认文件夹)。

- 切换到 Sharing(共享)选项卡,你会看到已连接的 syncthing 实例列表。选择 server2,将 Default Folder 与该 syncthing 实例 server2 共享。
- 切换到 File Versioning(文件版本控制)选项卡,选择你想要使用的文件版本控制方法,然后输入你要保留的版本数量。
点击 Save(保存)以应用你的修改。

最后,切换到 server2 的仪表盘,你会收到 server1 想要共享 Default Folder 的通知消息。点击 Share(共享)确认。

一旦过程完成,你应该会看到 Default Folder 已被共享。
在 server1 的 Default Folder 部分,你应该会看到 Shared With(共享对象)部分的值为 server2。

在 server2 上,你应该会看到 Default Folder 以及共享给 server1 的 Shared With(共享对象)部分。

Syncthing 实例之间的文件同步
既然你已经通过 Syncthing 配置好了共享目录,让我们通过在 server1 上创建新文件,并在 server2 上查看文件列表来验证同步是否正常工作。
在 server1 上,进入 Sync 目录,并使用以下命令创建新文件。
cd ~/Sync/
touch {1..20}.txt

切换到 server2,进入 Sync 目录,并查看该目录中的文件列表。
cd ~/Sync/
ls -ah
如果你在 Sync 目录中看到多个 .txt 文件,说明你已经顺利完成了 syncthing 的安装。

从这里开始,你可以在 syncthing 实例之间创建并共享新目录,也可以添加新实例。
总结
恭喜!你已完成了在 Ubuntu 22.04 服务器上安装 Syncthing。你还学习了如何使用 UFW(Uncomplicated Firewall,简单防火墙)保护 syncthing、在 syncthing 实例之间建立连接、设置共享文件夹,以及验证共享目录之间的同步。
此外,你可以向当前的 syncthing 安装中添加新设备并设置共享文件夹,这样你就可以从多个设备访问文件了。