飞牛NAS部署Syncthing:P2P文件同步
为什么选择 Syncthing 进行文件同步
在 NAS 的使用场景中,文件同步是一个高频需求。常见的方案有网盘同步、Rsync、以及各类专有同步软件。Syncthing 的优势在于其 P2P 架构:没有中心服务器,所有数据直接在设备间加密传输,既保障了隐私,又避免了第三方服务限制。对于飞牛 NAS 用户来说,部署 Syncthing 可以实现 NAS 与电脑、手机、服务器之间的实时或定时同步,非常适合备份照片、代码库、文档等场景。
准备工作
在开始之前,请确保你的飞牛 NAS 满足以下条件:
系统版本为飞牛 NAS (fnOS) 最新稳定版。 已开启 SSH 远程访问(可以在系统设置-网络服务中开启)。 拥有一个非 root 的 sudo 用户(一般安装系统时创建的默认用户即可)。 网络环境允许设备间直连(如果需要跨公网同步,需要配置端口转发或中继)。
方法一:使用 Docker 部署 Syncthing(推荐)
Docker 方式隔离性好、升级方便,是飞牛 NAS 上部署 Syncthing 的首选。
1. 拉取 Syncthing 镜像
SSH 登录到你的飞牛 NAS,执行以下命令拉取官方镜像:
sudo docker pull syncthing/syncthing
2. 创建持久化数据目录
为了保存同步配置和数据,建议在 NAS 上创建专用目录。这里我们统一放在 /docker/syncthing 下:
sudo mkdir -p /docker/syncthing/config
sudo mkdir -p /docker/syncthing/data
sudo mkdir -p /docker/syncthing/sync
config 存放配置文件,data 存放索引数据库,sync 是你希望同步的默认文件夹。
3. 运行容器
使用以下命令启动 Syncthing 容器,并使其开机自启:
sudo docker run -d \
--name syncthing \
--restart unless-stopped \
-p 8384:8384 \
-p 22000:22000/tcp \
-p 22000:22000/udp \
-p 21027:21027/udp \
-v /docker/syncthing/config:/var/syncthing/config \
-v /docker/syncthing/data:/var/syncthing/data \
-v /docker/syncthing/sync:/sync \
-e PUID=1000 \
-e PGID=1000 \
syncthing/syncthing
对端口和目录的解释:
8384 是 Web 管理界面端口,建议仅在内网访问或搭配反向代理使用。
22000 TCP/UDP 是设备间直接同步的端口。
21027 UDP 用于设备发现。
PUID/PGID 请替换为你的 NAS 用户 ID(默认一般为 1000),否则同步文件权限可能出错。
4. 访问 Web 界面
容器启动后,在浏览器中输入 http://你的NAS内网IP:8384。首次访问会看到一个设备 ID 页面,这就是 Syncthing 的身份标识。你可以立即设置 Web 界面的用户名和密码(在设置-图形用户界面中),防止未授权访问。
方法二:使用飞牛 NAS 的 Docker Compose 管理
如果你习惯用 docker-compose 管理容器,可以创建一个 docker-compose.yml 文件:
version: '3'
services:
syncthing:
image: syncthing/syncthing:latest
container_name: syncthing
restart: unless-stopped
ports:
- "8384:8384"
- "22000:22000/tcp"
- "22000:22000/udp"
- "21027:21027/udp"
volumes:
- /docker/syncthing/config:/var/syncthing/config
- /docker/syncthing/data:/var/syncthing/data
- /docker/syncthing/sync:/sync
environment:
- PUID=1000
- PGID=1000
然后在文件所在目录执行 sudo docker-compose up -d 即可。
基本配置与设备连接
1. 添加远程设备
在 Syncthing Web 界面,点击右下角的“添加远程设备”。你需要输入另一台设备上显示的“设备 ID”(一串长字符)。输入后,对方设备会收到连接请求,同意后两台设备就建立了加密通道。
2. 创建共享文件夹
在本地设备上,点击“添加文件夹”,设置文件夹标签和路径。路径使用容器内的 /sync 目录,对应宿主机 /docker/syncthing/sync。你可以直接通过飞牛 NAS 的文件管理器向该目录写入文件,Syncthing 会自动同步。
接着,在共享标签下勾选你刚才添加的远程设备,对方设备会收到共享请求。接受后,你可以选择目标路径(也可以自动接受并创建文件夹)。
3. 调优同步参数
在设置-连接中,可以调整“全局发现服务器”和“中继服务器”。如果你有公网 IP 或内网设备,建议关闭中继,仅使用直连。在“速率限制”中,可以为局域网上传和下载设置较高的速度,避免同步占用所有带宽。
在飞牛 NAS 上添加其他同步文件夹
如果默认的 /sync 目录不够用,你可以通过挂载宿主机的其他目录来扩展。例如,你想同步 NAS 上的照片文件夹 /volume1/Photos,需要先停止容器,然后添加新的卷挂载:
sudo docker stop syncthing
sudo docker rm syncthing
重新运行容器时,增加 -v /volume1/Photos:/photos 参数。然后在 Syncthing 界面添加文件夹,路径填写 /photos。注意,容器内的路径不能重复,且要确保 PUID/PGID 对 /volume1/Photos 有读写权限。
常见问题与解决方案
1. 同步速度慢
检查设备间是否通过中继连接。在 Syncthing Web 界面的“远程设备”状态中,可以看到连接类型。如果是“中继”,说明无法直连。解决方法:确认两台设备在同一局域网,或者配置端口转发。你也可以在设置中禁用中继,强制直连。
2. 文件权限错误
同步后的文件所有者显示为 root 或错误用户。这通常是因为容器内的用户与宿主机用户 UID 不匹配。确保 PUID 和 PGID 设置为你飞牛 NAS 常用用户的 ID(通过 id 用户名 命令查看)。
3. 无法访问 Web 界面
检查容器是否正常运行:sudo docker ps。查看日志:sudo docker logs syncthing。如果端口被占用,可以修改宿主机端口映射,例如 -p 8385:8384。
总结
通过 Docker 在飞牛 NAS 上部署 Syncthing,你获得了一个安全、去中心化的文件同步系统。整个过程只需几个命令,后续管理完全通过 Web 界面完成。无论是备份重要数据,还是跨设备协作,Syncthing 都能稳定胜任。建议定期检查更新镜像,以获取最新功能和安全修复。现在,你可以开始将 NAS 上的文件与电脑、手机甚至其他服务器无缝同步了。