Skip to content

🚀 使用 Docker Compose 部署 syncthing

🚀 使用 Docker Compose 部署 Syncthing

Syncthing 是一款开源免费的 点对点文件同步工具 ,它能在你的多台设备(如电脑、手机、服务器、NAS)之间实现文件实时同步,所有数据都直接在你的设备间传输,无需经过第三方服务器,确保了隐私和安全。

📦 准备工作

  1. 环境要求:确保你的系统已安装 DockerDocker Compose
  2. 创建目录:为部署和管理方便,建议创建一个独立目录,例如 mkdir -p /opt/docker/syncthing,然后进入该目录 cd /opt/docker/syncthing

🛠 配置 Docker Compose

将你提供的配置稍作优化和整理,创建 docker-compose.yml 文件:

#version: "3.8"
services:

  syncthing-a:
    image: syncthing/syncthing:latest
    container_name: syncthing-a
    restart: unless-stopped
    network_mode: host
    volumes:
      - /mnt/10t:/volume      # 挂载硬盘 A
      - ./config-a:/var/syncthing/config
    environment:
      - STGUIADDRESS: "0.0.0.0:8384"
      - PUID: "0"
      - PGID: "0"
      #拿他没辙
      #PUID: "103"
      #PGID: "112"

  syncthing-b:
    image: syncthing/syncthing:latest
    container_name: syncthing-b
    restart: unless-stopped
    network_mode: host
    volumes:
      - /mnt/10t-2:/volume      # 挂载硬盘 B
      - ./config-b:/var/syncthing/config
    environment:
      - STGUIADDRESS: "0.0.0.0:8385"
      - PUID: "0"
      - PGID: "0"

#若无法运行请去掉配置项“environment:”下面的-号。 

关键配置说明

配置项 说明与建议
network_mode: host 使用 host 网络模式 可以简化配置,并有助于改善在本地网络下的设备发现和传输性能。
volumes - /mnt/10t:/volume 将本地硬盘映射到容器内,这是你希望同步的文件所在位置。- ./config-a:/var/syncthing/config 将配置目录持久化到本地,防止容器重启后配置丢失
environment PUID=0PGID=0 让容器以 root 权限 运行,可以避免因权限问题导致的文件读写错误。 STGUIADDRESS 环境变量设置了 Web 管理界面的监听地址和端口。

🚀 启动与验证

  1. 启动服务:在 docker-compose.yml 文件所在目录执行: bash docker-compose up -d 这会拉取镜像并在后台启动两个 Syncthing 容器。

  2. 检查状态bash docker-compose ps 如果两个容器的状态均为 Up,则说明启动成功。

⚙️ 基本配置与使用

  1. 访问 Web 管理界面

    • 对于 syncthing-a,在浏览器中访问 http://你的服务器IP:8384
    • 对于 syncthing-b,访问 http://你的服务器IP:8385
  2. 初始设置

    • 首次访问,Syncthing 的 Web 界面可能会提示你设置用户名和密码以增强安全性。建议为外网访问开启加密连接。
    • Syncthing 的 Web 界面支持多国语言,你可以根据需要切换。
  3. 添加设备与同步文件夹: Syncthing 采用 P2P(点对点) 方式同步,无需中心服务器。

    • 获取设备 ID:在每个设备的 Web 界面中,点击 "操作" -> "显示 ID",复制长长的设备 ID。
    • 添加远程设备:在另一台设备的 Web 界面,点击右下角的 "添加远程设备",粘贴复制的设备 ID。
    • 共享文件夹:在任一设备上,点击 "添加文件夹",设置要同步的文件夹路径(例如,在 syncthing-a 上,你可以设置路径为 /volume/myshare)。在文件夹的 "共享" 选项卡中,勾选你刚刚添加的远程设备。
    • 接受共享:在另一台设备上,你会在 Web 界面看到共享文件夹的邀请,点击"添加"接受即可。之后,这两个文件夹之间的文件就会开始自动同步。

🔒 维护与管理

  • 服务管理

    • 停止服务docker-compose down
    • 重启服务docker-compose restart
    • 查看日志docker-compose logs -f syncthing-a (或 syncthing-b)
  • 版本更新bash # 进入 docker-compose.yml 所在目录 docker-compose down docker-compose pull # 拉取最新镜像 docker-compose up -d

  • 数据备份:定期备份你的 docker-compose.yml 文件以及 config-aconfig-b 目录,这些目录包含了 Syncthing 的所有配置信息。

🐛 常见问题排查 (FAQ)

问题现象 可能原因与解决方法
无法访问 Web 界面 检查服务器防火墙/安全组是否放行了 8384 和 8385 端口。确认容器是否正常运行:docker-compose ps
文件同步失败或权限错误 检查挂载的本地目录(如 /mnt/10t)及其父目录的权限,确保 Docker 容器有读写权限。在配置中设置 PUID=0PGID=0 通常可解决权限问题。
设备无法发现或连接 确保设备间网络通畅。在路由器或防火墙上,确保 22000/tcp、22000/udp 和 21027/udp 端口已开放。使用 host 网络模式通常有助于改善连接。检查 Syncthing Web 界面 "设置" 中的 "全局发现服务器""NAT 穿透" 功能是否启用。

希望这份教程能帮助你顺利搭建起属于自己的私有化文件同步网络!