Docker 玩法

飞牛NAS部署Syncthing:P2P文件同步

2026-07-30 2 admin

为什么选择 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 不匹配。确保 PUIDPGID 设置为你飞牛 NAS 常用用户的 ID(通过 id 用户名 命令查看)。

3. 无法访问 Web 界面

检查容器是否正常运行:sudo docker ps。查看日志:sudo docker logs syncthing。如果端口被占用,可以修改宿主机端口映射,例如 -p 8385:8384

总结

通过 Docker 在飞牛 NAS 上部署 Syncthing,你获得了一个安全、去中心化的文件同步系统。整个过程只需几个命令,后续管理完全通过 Web 界面完成。无论是备份重要数据,还是跨设备协作,Syncthing 都能稳定胜任。建议定期检查更新镜像,以获取最新功能和安全修复。现在,你可以开始将 NAS 上的文件与电脑、手机甚至其他服务器无缝同步了。