概述
Syncthing 是一款开源的去中心化文件同步工具。它不需要任何云服务器,设备之间直接通信同步数据。相比传统网盘方案,Syncthing 完全由你掌控,没有文件大小限制,也没有隐私泄露风险。
适合场景:多设备文件同步、NAS 数据备份、跨机房文件分发。
准备工作
- 一台 Linux 服务器(推荐 Ubuntu 22.04+),至少 1GB 内存
- 需要同步文件的电脑或手机(安装 Syncthing 客户端即可)
- 管理员权限(sudo)
安装步骤
第一步:添加 Syncthing 官方源
sudo apt-get install -y curl ca-certificates gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://syncthing.net/debian/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/syncthing.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing.gpg] https://syncthing.net/debian stable main" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
第二步:安装 Syncthing
sudo apt-get install -y syncthing
第三步:创建数据目录并初始化
mkdir -p ~/syncthing-data
cd ~/syncthing-data
syncthing
首次启动后,终端会输出类似这样的内容:
INFO: Single cluster total device count 1, P=0.0%, T=0.0%, E=0.0%
INFO: My ID: ABCDEFG-XXXXXXX-YYYYYYY-ZZZZZZZ
记下你的设备 ID(My ID: 后面那串字符),按 Ctrl+C 停止服务。
第四步:设置为 systemd 服务
# 将配置复制到标准位置
sudo mkdir -p /var/lib/syncthing
sudo cp ~/syncthing-data/config.xml /var/lib/syncthing/
sudo chown -R $USER:$USER /var/lib/syncthing
创建用户级 systemd 服务文件:
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/syncthing.service << 'EOF'
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=man:syncthing(1)
StartLimitIntervalSec=60
StartLimitBurst=4
[Service]
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0
Restart=no
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
[Install]
WantedBy=default.target
EOF
启用并启动:
systemctl --user daemon-reload
systemctl --user enable --now syncthing
systemctl --user status syncthing
如果提示 “Failed to connect to bus: No such file or directory”,先执行:
export XDG_RUNTIME_DIR=/run/user/$(id -u) systemctl --user daemon-reload
第五步:修改监听地址
默认情况下 Syncthing 只监听 localhost:8384。从外部访问需修改:
nano ~/syncthing-data/config.xml
找到 <address>127.0.0.1:8384</address>,改为:
<address>0.0.0.0:8384</address>
重启服务使配置生效:
systemctl --user restart syncthing
第六步:配置防火墙
sudo ufw allow 8384/tcp # Web 管理界面
sudo ufw allow 22000/tcp # Syncthing 同步端口
sudo ufw reload
如果是云服务器(阿里云/腾讯云/AWS),记得在控制台安全组中也放行这两个端口。
第七步:访问管理界面
浏览器打开 http://你的服务器IP:8384,即可看到 Syncthing 的 Web 管理界面。
验证安装
# 检查服务状态
systemctl --user status syncthing
# 检查监听端口
ss -tlnp | grep syncthing
# 查看实时日志
journalctl --user -u syncthing -f
日志中出现 Ready to synchronize 说明服务正常运行。
连接其他设备
在 Web 管理界面中操作:
- 点击左侧「操作」→「显示 ID」,复制设备 ID
- 在其他设备(电脑/手机)上安装 Syncthing
- 点击「添加远程设备」,粘贴刚才的设备 ID
- 在远程设备上同样添加你的设备 ID(双向信任)
- 选择一个文件夹,勾选「共享」给远程设备
- 远程设备确认接收后即可开始同步
常见问题
Q: 端口 22000 连接超时怎么办?
检查服务器安全组是否放行了 TCP 22000 端口。云服务器需要在控制台额外配置安全组规则,仅配置 ufw 不够。
Q: 两台设备不在同一局域网,能同步吗?
可以。Syncthing 支持 NAT 穿透,直连失败时会自动使用全局 Relay 服务器中转。自建 relay 服务器可提升同步速度。
Q: 如何设置文件夹只读(只接收不修改)?
在 Web 界面中编辑文件夹设置,将类型改为「接收备份」,这样远程设备只能上传文件,不能删除或修改。
Q: 磁盘空间满了会怎样?
Syncthing 不会自动删除旧文件。建议在 config.xml 中设置 maxAge 和 minFreeDisk 参数来管理磁盘空间。
Q: 手机端怎么用?
Android 安装官方「Syncthing-Fork」或「Syncthing」应用。iOS 暂无官方客户端,可通过浏览器访问 Web UI 进行基础操作。