D

Docker部署Syncthing

HB 电脑 2023-12-19

官方网站:https://syncthing.net
github项目地址:https://github.com/syncthing/syncthing
docker镜像地址:https://hub.docker.com/r/linuxserver/syncthing

Syncthing是一个免费开源的文件同步工具,可以帮助你在不同的电脑、手机等之间同步文件/文件夹。安装好了Syncthing后,会生成一个唯一的ID,在另一台安装了Syncthing上添加这个ID就可以同步了。

Syncthing所有的信息通讯都使用TLS进行加密,加上Syncthing同步文件不像网盘那样还是经过中转服务器,所以安全性是非常好的。Syncthing还有强大的版本控制:回收站式版本控制、简易版本控制、阶段版本控制、外部版本控制 。这四种版本控制基本上可以满足绝大数人的数据恢复需要。

Syncthing支持Linux 、Windows 、Mac OS X、Android等,PC、手机等可以安装Syncthing,加上Syncthing使用的方便快捷,所以如果我们有一台24小时保持开机的电脑或者是VPS主机,那么我们就可以利用Syncthing轻松搭建一个私人云存储了。

Docker部署

docker pull syncthing/syncthing
docker run -p 8384:8384 -p 22000:22000/tcp -p 22000:22000/udp -p 21027:21027/udp \
-v /wherever/st-sync:/var/syncthing \
--hostname=my-syncthing \
syncthing/syncthing:latest

docker-compose部署

把要同步的资料夹挂载到volumes。此处Syncthing的顶层资料夹是/var/syncthing。Network mode使用host mode。

version: "3"
services:
  syncthing:
    image: syncthing/syncthing
    container_name: syncthing
    hostname: my-syncthing
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /home/user/Syncthing:/var/syncthing
    network_mode: host
    restart: unless-stopped

00.png

手机版APP

Android到 F-DroidGoogle Play下載

iOS目前沒有官方APP,仅有第三方开发的付费软件 Möbius Sync

客户端其他下载地址

安卓客户端下载:
https://github.com/syncthing/syncthing-android

Windows客户端下载:
https://github.com/Martchus/syncthingtray

Windows客户端下载(推荐):
https://github.com/Martchus/syncthingtray/releases/download/v1.4.13/syncthingtray-qt5-1.4.13-i686-w64-mingw32.exe.zip

“我不是咕咕鸽”的syncthing搭建操作视频:
https://youtu.be/DUC0wGQMnJs?si=JwwtY3biGSKC6Y0V

Syncthing初始化设置

Syncthing预设同步模式是双向的,只要二台装置在线上,一边新增的档案就会马上传送到另外一边。删除的话两边都会同时删除。

让我们先设定电脑上的Snycthing程序,再设定手机上的,测试二者同步情况。

请让二个装置处于同一个Wifi环境,确认Linux电脑上的Snycthing已经运行,浏览器登录http://localhost:8384

首先按照指示到设定 → GUI,给Syncthing设定一组帐号密码

1.png

2.png

点选储存后页面会重新载入,以刚刚新增的帐号密码登入网页界面。

现在是什么都没有设定的状态。Syncthing左边的面板是电脑要分享的资料夹,右上角的面板是本机上传的状态,右下角远端装置的状态。

3.png

点选左边 Default Folder,按编辑,你会看到它用于同步的资料夹路径是为/home/user/Sync,Sync就是用于存放同步档案的资料夹。

4.png

你可以自行新增其他同步资料夹,比方说新增~/Root路径,即指向/home/user/下面的资料夹Root。

5.png

另外,Syncthing服务器的设定档和log会存在/home/user/.local/share/state

Syncthing在同步的时候若遇到同样名称的文件会直接盖掉,你可以启用“文件版本控制”让文件不会马上被删除。

6.png

开启文件管理员,切换到要同步的/home/user/Sync资料夹,先放个文件进去

7.png

接著开放电脑防火牆通讯端口

sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw allow 21027/udp
sudo ufw reload

在手机上开启Syncthing APP,左边滑进来,点选“显示装置识别码”,复制下来

8.png

在Syncthing网页介面点选右下角的“新增远端装置”,填入手机上显示的识别码

9.png

点选 Default Folder,点编辑,切换到“正在共享”,勾选跟手机分享资料夹。

10.png

点选Syncthing网页左边的“全部重新扫描”尝试同步到远端装置

手机应该会收到通知,点选同意连线

11.png

手机会收到新增资料夹的请求

12.png

给资料夹取名,再点选资料夹图示(红框处),设定手机上用于存放同步的资料夹。请在手机内部储存空间建立Syncthing/Sync结构的资料夹,再点选确定。

13.png

几秒后文件就会同步到手机上了。网页界面显示“最新”代表双方都已完成同步。

14.png

日后你想新增第三个装置,同样也是到电脑上的Syncthing点选“新增远端装置”。电脑的话记得开启防火牆。

  1. Syncthing的同步连线方式

本节介绍Syncthing的同步原理和连线方式。每个Syncthing装置都有一组随机产生的识别码。Syncthing在传输资料的时候会使用TLS加密连线。

首先是Wifi连线,Syncthing 预设会启用探索模式,二个的装置在同一个Wifi下就能互相发现对方,进行P2P。

15.png

但若是位于不同网路(比方说手机连4G,电脑位于NAT后面),那就不可能P2P。这时连线高机率走官方中继伺服器。尽管可以连线但速度会很慢。

16.png

官方文件推荐的做法是端口转发(port forwarding),再让你的电脑取得公网IP,使其能从外网存取。这样就不需要走走官方中继服务器也可以让二个装置P2P,速度比较快。

而我是使用内网穿透的方式,来让二个装置P2P。

  1. 内网穿透软体搭配Syncthing使用

我希望Syncthing不只是可以在内网传输,在外网也可以使用。甚至不需要Wifi也能连线。

就像使用BT软件一样,要让不同网路的二个装置P2P,你就得将装置暴露到公开网路。

但是把电脑暴露给公网很危险,而且若有人可以整天扫我的通讯端口也怪可怕的,我不想让装置上的Syncthing服务器可以被任意探索。

要解决以上问题,可以用内网穿透软件TailScale或ZeroTier,用VPN的机制让所有装置处于虚拟内网,就不需要把电脑暴露给公共网路了,也不需要让Syncthing开自动探索,加强安全性。

在装好内网穿透软件后,回到Syncthing网页介面,点选右上角操作 → 设定 → 连线,关闭所有自动探索选项。

17.png

刚刚设定的手机同步资料夹应该不会断掉,只不过你得点选远端装置,编辑 → 进阶,把“位址”改成tcp://装置的虚拟区域IP才可以继续同步。

18.png

  1. 设定Syncthing单向同步

跟双向同步不同,“单向同步”就是指定一个资料夹,将其做单向传输。

比方说电脑新增一个~/Backup资料夹,点选编辑 → 进阶,将资料夹类型设为“仅接收”。这样在手机新增该资料夹之后,就只会接收手机传过来的档案,而不会把电脑端的文件也同步到手机上。

19.png

參考資料
Syncthing官方文件
Syncthing官方论坛

PREV
Docker部署KOD可道云
NEXT
H.264、H.265视频编解码有国际标准了

评论(0)

发布评论