Syncthing跨平台部署教程:安装自启与排障
【免费下载链接】syncthingOpen Source Continuous File Synchronization项目地址: https://gitcode.com/GitHub_Trending/sy/syncthing
假设你有一台 Windows 办公本、一台 MacBook 和一台 Linux 小服务器,想让文档和照片在它们之间自动同步,又不想经过任何网盘。Syncthing 是一款开源的持续文件同步工具,通过 P2P(对等网络)让设备之间直接互传文件,全程用 TLS(传输层安全协议)加密。这篇文章我们按任务阶段走一遍:安装 → 自启 → 网络打通 → 排障。
先看决策表:什么系统装什么
别追新,先选自己系统的"原路":
| 平台 | 推荐安装方式 | 自启机制 |
|---|---|---|
| Windows | 官方 ZIP 包 | sc 服务(系统自带) |
| macOS | Homebrew | launchd LaunchAgent |
| Linux | 发行版包管理器 | systemd 用户服务 |
这张表就是全文主线:先解决"怎么装",再解决"怎么开机就跑",最后解决"网络怎么通"。
阶段一 · 环境与选型:版本、端口、安装方式一次看清
版本门槛很低:Windows 7 及以上、macOS 10.15 及以上、主流 Linux 发行版都能跑。真正的变量在网络,先记牢四个端口:
| 端口 | 协议 | 用途 |
|---|---|---|
| 22000 | TCP | 文件同步(BEP,块交换协议)与中继 |
| 22000 | UDP | QUIC(快速 UDP 互联网连接)加速直连 |
| 21027 | UDP | 局域网本地发现,让同网段设备互相找到 |
| 8384 | TCP | Web 管理界面,默认只监听本机 |
安装方式对比,每个平台挑一种即可:
| 平台 | 方式 | 做法 |
|---|---|---|
| Windows | 官方 ZIP | 解压到C:\Program Files\Syncthing,双击运行 |
| macOS | brew | brew install syncthing |
| macOS | 官方 .app | 拖入应用程序,双击运行 |
| Linux | 包管理器 | apt/dnf安装 syncthing |
| Linux | 官方二进制包 | 下载 tar 包,把可执行文件放进/usr/local/bin |
阶段二 · 最简落地 🎯 每平台一条最短路径
目标只有一个:浏览器能打开http://localhost:8384。
Windows:解压后双击syncthing.exe,首次运行会直接弹出浏览器窗口,完成。
macOS:
brew install syncthing syncthing serve首次运行会生成一个随机的 Web UI 密码,打印在终端里,记下来。
Linux:
sudo apt install syncthing # Debian / Ubuntu syncthing --versionFedora 把apt换成dnf即可。跑起来之后进管理页面做两件事:给 GUI 设置固定用户名和密码,然后添加对端设备并共享一个文件夹。
阶段三 · 开机自启动:三平台对照表
| 平台 | 机制 | 文件 / 命令位置 | 验证 |
|---|---|---|---|
| Windows | sc 服务 | sc create(见下) | sc query Syncthing |
| macOS | launchd | ~/Library/LaunchAgents/syncthing.plist | launchctl list \| grep syncthing |
| Linux | systemd 用户服务 | ~/.config/systemd/user/syncthing.service | systemctl --user status syncthing |
Windows(管理员 PowerShell):
sc create Syncthing binPath= "\"C:\Program Files\Syncthing\syncthing.exe\" serve --no-browser" start= auto sc start Syncthingsc create一行同时完成"安装 + 自启",服务独立于登录用户,配置落在%PROGRAMDATA%\Syncthing。
macOS:项目里自带现成模板 etc/macos-launchd/syncthing.plist,复制到~/Library/LaunchAgents/,把USERNAME换成你的 macOS 用户名,然后:
launchctl load ~/Library/LaunchAgents/syncthing.plist这个文件里KeepAlive为 true,进程挂了会自动拉起;日志会重定向到~/Library/Logs/Syncthing.log。
Linux:把模板 etc/linux-systemd/user/syncthing.service 原样放到~/.config/systemd/user/:
systemctl --user daemon-reload systemctl --user enable --now syncthing用户级服务比系统服务更适合 Syncthing:配置本来就在用户目录,权限天然匹配。多用户服务器则用系统模板 etc/linux-systemd/system/syncthing@.service,sudo systemctl start syncthing@alice这样按用户实例化。
阶段四 · 网络与防火墙:四个端口 + 直连/中继决策树 📡
两台设备怎么连上?逻辑就一句话:先试直连,不行再走中继。
中继只是一根透传管道,内容依然是端到端加密的,不用紧张。在 GUI 的设备详情里能看到当前是"直连"还是"中继"——看到中继且速度差,说明直连没建起来。
防火墙放行:
Windows(管理员 CMD,比图形界面更省事):
netsh advfirewall firewall add rule name=Syncthing dir=in action=allow protocol=TCP localport=22000,8384 netsh advfirewall firewall add rule name=Syncthing-UDP dir=in action=allow protocol=UDP localport=22000,21027Linux UFW:项目的 etc/firewall-ufw/syncthing 就是现成的 UFW 应用规则,复制到/etc/ufw/applications.d/,然后sudo ufw allow syncthing。
macOS:首次联网时系统会弹窗询问,点允许即可。
只在局域网内同步的话,开 UDP 21027 和 TCP/UDP 22000 就够了,8384 不必暴露给外网。
阶段五 · 验证与排障:速查表 + 日志位置
| 现象 | 最可能原因 | 排查方法 |
|---|---|---|
| 两台设备互找不到 | 21027 未放行或不在同网段 | 看 GUI 里的"发现地址",手动添加地址:端口 |
| 连上了但文件不动 | 文件夹没共享给该设备,或被忽略规则挡掉 | GUI 里检查文件夹共享;查看.stignore |
| 外网打不开管理页 | 8384 默认只监听本机 | 别暴露,用隧道:ssh -L 8384:localhost:8384 user@host |
| 速度慢、延迟高 | 直连不可用,走了中继 | 确认 UDP 22000(QUIC)放行 |
| 重启后没自启 | 服务没 enable | systemctl --user is-enabled syncthing、sc query Syncthing |
| 出现冲突副本 | 两端同时改过同一文件 | 属正常保护;需要的话开启版本控制 |
日志位置一览:
| 平台 | 默认日志 |
|---|---|
| Windows | %LOCALAPPDATA%\Syncthing\log\ |
| macOS | ~/.local/state/syncthing/log/(launchd 可重定向到~/Library/Logs/) |
| Linux | ~/.local/state/syncthing/log/;用户服务可看journalctl --user-unit syncthing -f |
一个实战习惯:先看 GUI 设备详情里的"发现地址"和"连接类型",再回头读日志——八成"不同步"问题在这一步就有答案。
完成度自查清单
逐项打勾,全部完成即部署到位:
- 管理页可访问,且设置了固定用户名密码
- 已添加对端设备,并双向共享了文件夹
- 测试文件在两端都出现了
- 自启已启用(重启一次机器验证过)
- 防火墙已放行 22000(TCP/UDP)与 21027(UDP)
- 知道日志在哪,并跑通一次
tail -f
打通之后,以后加新设备只是"复制设备 ID → 添加 → 共享文件夹"的重复动作,部署的难点都在这六项里了。
【免费下载链接】syncthingOpen Source Continuous File Synchronization项目地址: https://gitcode.com/GitHub_Trending/sy/syncthing
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考