Syncthing是一款开源的点对点文件同步工具,旨在安全地在多个设备之间同步文件。与基于云的服务不同,Syncthing直接在设备之间运行,不会将数据存储在外部服务器上,让用户完全掌控自己的文件和隐私。它使用加密通信,确保数据传输安全。
Syncthing可以在计算机、移动设备和服务器之间同步文件,是一款功能强大且注重隐私的实时文件同步解决方案。它易于配置、跨平台支持,并且在后台运行,检测到文件更改时自动同步。
本教程将介绍如何在Debian 12服务器上安装Syncthing文件同步软件,设置Syncthing身份验证,连接两台Syncthing服务器,以及在Syncthing服务器之间设置目录共享和同步。
前提条件
开始本教程前,请确保满足以下条件:
- 两台或多台Debian 12服务器
- 具有管理权限的非root用户
在Debian上安装Syncthing
Syncthing是一款安全的点对点同步工具。在本节中,你将通过官方Syncthing仓库使用APT包管理器安装Syncthing。
首先,运行以下命令更新Debian软件包索引并安装一些基本依赖。
sudo apt update && sudo apt install gnupg2 curl apt-transport-https -y

使用以下命令为Debian系统添加Syncthing GPG密钥和仓库。
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

接下来,运行以下apt命令刷新软件包索引并安装syncthing包。输入Y确认安装。
sudo apt update && sudo apt install syncthing

安装完成后,使用以下命令检查syncthing二进制文件并查看其版本。
which syncthing
syncthing --version
syncthing --help
如下图所示,Syncthing 1.27已安装在/usr/bin/syncthing路径下。

配置UFW防火墙
安装Syncthing后,你将安装UFW(Uncomplicated Firewall),为OpenSSH和Syncthing服务开放端口,然后在Debian服务器上启动并启用UFW。
使用以下apt命令安装ufw包。
sudo apt install ufw -y
运行以下命令启用OpenSSH配置文件并激活UFW。输入y确认,当UFW运行并启用时,你将看到输出"Firewall is running and enabled on system startup"。
sudo ufw allow OpenSSH
sudo ufw enable
接下来,运行以下ufw命令启用syncthing和syncthing-gui配置文件。
sudo ufw allow syncthing
sudo ufw allow syncthing-gui
最后,运行以下命令检查UFW状态。UFW应处于"active"状态,并启用了OpenSSH、syncthing和syncthing-gui配置文件。
sudo ufw status
配置Syncthing
在本节中,你将通过为用户启动syncthing服务并设置Syncthing Web仪表板的本地IP地址来配置Syncthing。在本示例中,我们将使用两台Debian服务器:debian1和debian2。
使用以下命令登录到你的用户。在本例中,debian1使用user1,debian2使用user2。
su - user1
现在运行以下systemctl命令启动、启用并验证syncthing@user1.service。对于使用user2的debian2服务器,服务名应变为syncthing@user2.service。
sudo systemctl enable --now syncthing@user1.service
sudo systemctl status syncthing@user1.service
如下图所示,syncthing@user1.service正在运行并已启用。

接下来,使用nano编辑器打开Syncthing的配置文件~/.local/state/syncthing/config.xml。
nano ~/.local/state/syncthing/config.xml
在<gui ...>部分中,使用tls="true"启用安全TLS连接,并输入你的内部IP地址。在本示例中,debian1服务器IP地址为192.168.5.123,debian2服务器IP地址为192.168.5.120。
<gui enabled="true" tls="true" debugging="false" sendBasicAuthPrompt="false"> <address>192.168.5.123:8384</address> <apikey>GENERATED-API-KEY</apikey> <theme>default</theme> </gui>
完成后,保存文件并退出编辑器。
最后,运行以下systemctl命令重启Syncthing服务。此时,Syncthing应在本地IP地址上运行,并启用了安全TLS连接。
sudo systemctl restart syncthing@user1.service
设置Syncthing用户
此时,你的Syncthing已运行并启用了Web管理仪表板。现在你将为两台Syncthing服务器debian1和debian2设置用户身份验证。
打开Web浏览器,访问https://192.168.5.123:8384/。确保将IP地址替换为你的Debian服务器的IP地址。你将看到Syncthing管理仪表板。
点击"Settings"按钮为Syncthing设置用户名和密码。

在"GUI"部分,输入你的用户名和密码,然后点击"Save"确认。

现在你将被重定向到Syncthing登录页面。输入你的用户名和密码登录。

如果登录成功,你将看到以下Syncthing仪表板。

连接Syncthing设备
现在你已经设置了Syncthing用户和密码身份验证,让我们将debian2服务器上的Syncthing连接到debian1。
在debian2服务器上,选择Action > Show ID以显示服务器ID或身份标识。这将显示debian2服务器的二维码,你可以复制此设备ID。

点击"Copy"按钮。

现在转到debian1仪表板,在Remote Devices部分点击"Add Remote Device"。

在弹出窗口中,粘贴debian2设备ID,然后点击Save。

接下来,转到debian2仪表板,你将看到如下配置信息:

点击"Add Device"确认并将debian2服务器连接到debian1。
如果一切正常,你可以从debian1仪表板看到debian2服务器已连接。

在设备之间同步文件夹
在debian1和debian2服务器连接后,你现在可以设置共享目录并在两台服务器之间同步文件。
确保在debian1仪表板上,在Folder部分你将看到状态为"Unshared"的"Default Folder"。

点击"Edit"按钮共享此文件夹。
- 在"Sharing"选项卡中,点击debian2以共享并与debian2服务器同步此文件夹。
- 在"File Versioning"选项卡中,根据需要选择文件版本控制方法。
- 点击Save确认。

现在转到debian2仪表板,你将看到如下通知:
点击Share确认并共享文件夹。

如果文件夹共享成功,你将看到状态为"Shared"的"Default Folder"。在下图中,debian1服务器已与debian2服务器共享。

总结
恭喜!你已成功在两台Debian 12服务器上完成Syncthing的安装。你还学习了如何通过仪表板连接Syncthing设备,以及在不同设备或机器之间同步文件夹和目录。