背景介绍很久之前我就用Syncthing 搭建过文件同步服务（见 使用 Syncthing 同步文件 ），只是当初是直接下载的可执行文件，在宿主机启服务实现文件同步的，对宿主机有一定的侵入性，且当时只是记录了怎么把服务跑起来，没有说明清楚服务跑起来后怎么配置，最终实现文件同步的。最近帮朋友使用 ChestnutCMS 搭建了个公司产品网站，正好需要在两台服务器器之间实现文件同步服务，一共有两台服务器：Web 服务器内网IP: 10.0.12.12配置：CPU - 4核 | 内存 - 8GB | 系统盘 - SSD云硬盘 180GB | 流量包 - 2000GB/月（带宽：12Mbps）主要部署 Docker + NginxProxyManager + KKFilePreview应用服务器内网IP: 10.0.16.13配置：CPU - 8核 | 内存 - 16GB | 系统盘 - SSD云硬盘 270GB | 流量包 - 3500GB/月（带宽：18Mbps）主要部署公司的云上业务系统 + ChestnutCMS，由于预算有限，数据库、Redis 等服务也装在这台服务器两台服务器处于相同的内网环境，ChestnutCMS 主要用于内容管理及网站静态发布，然后使用 Syncthing 将静态化的文件同步到 Web 服务器，使用 NginxProxyManager 发布到外网访问。应用部署及配置部署发布端使用 Docker 启动应用我们在应用服务器上部署发布端，由于应用服务器上也提前部署了 Docker, 我们使用 docker来部署，docker-compose.yaml 文件示例如下：services: app: image: syncthing/syncthing container_name: syncthing privileged: true restart: always volumes: - /data:/data - ../po-cms/wwwroot_release:/var/syncthing - ../hosts:/etc/hosts networks: - net-zzl ports: - 8102:8384 - 22000:22000 networks: net-zzl: name: bridge_zzl external: true使用 docker compose up -d 启动服务开放端口从上面的配置文件中，我们开启了 8102 和 22000 两个端口，由于我们的应用服务器不直接对外提供服务，需要使用 Web服务器代理，所以 需要将这两个端口对Web服务器开放：如果你的应用服务器本身启用了防火墙之类的机制，记得也要放行。配置 Syncthing UI界面对外可访问在 NginxProxyManager 中添加对外访问，相关的 DNS 解析请自行提前处理。Syncthing 配置第一次访问的时候系统会通过警告提示来引导用户做一些安全性相关的配置:发送匿名报告数据提示引导配置提示我主要配置的信息如下：Syncthing 常规配置Syncthing 图形用户界面设置至此 应用服务器的配置基本OK了。web服务器配置部署 Syncting我们还是使用 Docker 来部署，基本信息差不多，我只是结合web服务器的环境改了下挂载目录及端口：services: app: image: syncthing/syncthing container_name: syncthing privileged: true restart: always volumes: - /data:/data - ../nginx-proxy-manager/wwwroot_release:/var/syncthing - ../hosts:/etc/hosts networks: - net-zzl ports: - 8013:8384 - 22000:22000 networks: net-zzl: name: bridge_zzl external: true对应用服务器开放端口Syncthing 配置基本配置跟应用服务器保持一致配置同步一、添加远程设备在应用服务器添加web服务器的syncthing在 Web 服务器同意添加：二、应用服务器配置同步文件夹单击主界面的「添加文件夹」按钮：三、WEB服务器同意添加共享web服务器接收到添加共享提示配置信息配置完成后会自动进行同步同步完成后可在指定目录下看到同步后的文件参考链接Syncthing 官网：https://syncthing.net/Syncthing 官网文档：https://docs.syncthing.net/Syncthing Github 开源地址：https://github.com/syncthing/syncthing
下载syncthingwget https://github.com/syncthing/syncthing/releases/download/v1.20.2/syncthing-linux-amd64-v1.20.2.tar.gz tar -zxvf syncthing-linux-amd64-v1.20.2.tar.gz本应用解压的路径为 /opt/syncthing-linux-amd64-v1.20.2。下面配置syncthing 自启动。配置自启动根据官方提供的说明(https://docs.syncthing.net/users/autostart.html)有两种方式.第1种为 Using Supervisord,这种还要安装 supervisor，并启动服务，稍显麻烦，这里我们直接采用系统服务的方式。1、拷贝自启动文件到服务目录cp /opt/syncthing-linux-amd64-v1.20.2/etc/linux-systemd/system/syncthing@.service /etc/systemd/system/syncthing@root.service2、修改自启动文件主要修改内容为ExecStart 的内容，修改后的内容示例如下：/opt/syncthing-linux-amd64-v1.20.2/syncthing serve --gui-address=172.17.0.11:8384 --no-restart --logflags=0 3、启用并启动服务systemctl enable syncthing@root.service systemctl start syncthing@root.service