使用 Docker + Syncthing 同步文件

朱治龙
2024-05-29 / 0 评论 / 329 阅读 / 正在检测是否收录...

背景介绍

很久之前我就用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 解析请自行提前处理。
NginxProxyManager 配置

Syncthing 配置

第一次访问的时候系统会通过警告提示来引导用户做一些安全性相关的配置:
发送匿名报告数据提示
发送匿名报告数据提示
引导配置提示
引导配置提示

我主要配置的信息如下:
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 服务器同意添加:
lwr8ne4l.png
lwr8o8ce.png

二、应用服务器配置同步文件夹

单击主界面的「添加文件夹」按钮:
添加文件夹
配置文件夹
设置共享

三、WEB服务器同意添加共享

web服务器接收到添加共享提示
web服务器接收到添加共享提示

配置信息
配置信息

配置完成后会自动进行同步
配置完成后会自动进行同步

同步完成后可在指定目录下看到同步后的文件
同步完成后可在指定目录下看到同步后的文件

参考链接

0

评论 (0)

取消