图文详解:使用二进制部署 Syncthing

🧭 什么是 Syncthing?

Syncthing 是一个 开源的点对点文件同步工具,主要特点:

  • 🚫 无需云服务:数据只在你授权的设备之间传输
  • 🔒 端到端加密,基于 TLS + SHA256 身份验证
  • 🌍 支持 跨平台(Windows / macOS / Linux / Android)
  • 📂 多文件夹、多设备同步,自动发现和版本控制

Syncthing 特别适合局域网同步,也能通过 NAT 穿透和中继进行远程同步。

🧰 环境准备

  • 操作系统:Linux(CentOS、Ubuntu 均可)
  • 网络:保证设备间能通信(内网或通过 frp 穿透)

📦 下载并部署 Syncthing(二进制方式)

1️⃣ 下载官方预编译包

前往 https://syncthing.net/downloads/ 或直接使用命令:

1
2
3
4
curl -L -o syncthing.tar.gz https://github.com/syncthing/syncthing/releases/latest/download/syncthing-linux-amd64.tar.gz
tar -xzf syncthing.tar.gz
cd syncthing-linux-amd64-*
sudo cp syncthing /usr/bin/

2️⃣ 创建 Syncthing 用户(可选)

1
sudo useradd --system --no-create-home --group nogroup syncthing

PS:我这里图省事就直接用root运行的,不过官方并不建议这样做,最好还是创建个单独用户。

3️⃣ 创建服务目录和配置(可选)

1
2
3
sudo mkdir -p /etc/syncthing
sudo mkdir -p /var/lib/syncthing
sudo chown -R syncthing:nogroup /var/lib/syncthing

🔧 配置 Systemd 启动服务

1️⃣ 创建 Systemd 服务文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=man:syncthing(1)
StartLimitIntervalSec=60
StartLimitBurst=4

[Service]
# 如果直接以 root 运行就不需要User配置
User=syncthing
Environment=HOME=/var/lib/syncthing
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0 --home=/var/lib/syncthing --gui-address=<本机IP地址>:8384
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
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=default.target

2️⃣ 启动服务并设置自启动

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable syncthing
sudo systemctl start syncthing

🌐 访问 Web UI

默认监听:

  • 127.0.0.1:8384(本地管理界面)

如果需要内网其他主机访问,就需要配置--gui-address=<本机IP地址>:8384 参数。

🔐 设置 Web UI 访问密码(防止未授权访问)

默认情况下,Syncthing 的 Web 管理界面(默认监听 127.0.0.1:8384没有密码保护

你可以通过以下方式为其设置用户名和密码。

syncthing-init-passwd.png

user-passwd.png

保存密码设置后会自动跳转到登录页面,输入设置的用户名和密码即可登录。

🛠️ 客户端部署(其他设备)

重复上述安装流程即可。

关键点

  • 每台设备部署独立 Syncthing 实例
  • 登录 Web UI 后,互相添加对方设备 ID
  • 创建同步文件夹,并设定路径与权限

🔗 添加设备 ID(建立点对点同步)

Syncthing 使用唯一的 设备 ID(Device ID) 标识每个节点,设备之间需要互相添加对方的设备 ID,才能建立同步连接。

✅ 步骤一:获取对方设备 ID

通过 Web UI 查看

  • 打开浏览器访问本机 Syncthing 界面(默认是 http://127.0.0.1:8384
  • 点击右上角 「操作」 > 「显示ID」
  • 会弹出设备 ID(长字符串),可点击复制

syncthing-show-id.png

✅ 步骤二:互相添加设备

在设备 A 上添加设备 B,反之亦然:

  1. 进入 Web UI > 左侧菜单点击「添加远程设备」
  2. 填入设备 B 的 Device ID
  3. 可选项:
    • 设置 Device Name(自定义名称)

📌 添加后,会提示是否共享某些文件夹给对方,可直接勾选

syncthing-add-remote-device.png

syncthing-add-remote-device2.png

✅ 步骤三:在对方设备上确认配对

设备 B 会在界面上看到弹出提示「设备 A 想要连接你」:

  • 点击「添加设备」
  • 点击保存,完成设备配对

syncthing-client-add-remote-device.png

✅ 步骤四:选择同步的文件夹

添加设备后,你需要指定共享哪些文件夹:

  • 在「文件夹」列表中点击某个文件夹

syncthing-add-dir.png

  • 在「分享」标签中勾选对方设备

share-dir.png

  • 同步路径建议设置在空目录中
  • 双方路径可以不同,但文件夹 ID(内部标识)需一致
  • 在客户端点击「添加」确认同步,输入本机存储等路径。

share-dir-client.png

share-dir-client-save-path.png

剩下的就是等待自动同步了,当两边都显示为最新时即同步完成。

🔁 同步逻辑说明

  • 双方添加设备 + 文件夹共享后,Syncthing 会开始建立连接并同步数据
  • 默认使用局域网直连,可通过中继或穿透方式远程连接
  • 同步方式为「版本检测 + 差异块复制」,非常高效

📎 小贴士

  • ✅ 建议将设备 ID 复制保存,以便后续快速添加
  • ✅ 同步文件夹时双方应避免同一时间修改同一文件,避免冲突
  • ✅ 文件夹下 .stfolder 是 Syncthing 的标识文件,切勿删除