Docker 搭建开源文件同步工具 Syncthing

简介

Syncthing 是一个开源的文件同步工具,可以在不同设备之间同步文件和文件夹。它使用了点对点的方式进行同步,如果点对点连接成功则不需要通过云服务器中转,因此更加安全和私密。

Syncthing 就好比是 Onedrive,当你指定了同步哪些文件夹,它会定时检测文件夹下的文件是否有增加减少或者修改,如果有修改那么将会点对点同步到另外的客户端,当然这是你在一边配置了分享,另一边配置了同步的情况下。当然,它可以是单向同步,也可以是双向同步的,这取决于你的配置。

在正常情况下安装,你是不需要自己搭建发现服务器和中继服务器的,因为默认使用官方的服务器。,中继服务器(Relay Server)则是一种用于帮助设备之间传输数据的服务器。

但是考虑到玩意文件比较多或者文件比较大,文件同步的实时性要求又比较高,使用自己的服务器将是一个比较好的选择,所以接下来也有相关的教程,不需要则可以忽略。

搭建

1. 客户端搭建

docker run -d \
--name syncthing \
-p 8384:8384 \
-p 22000:22000/tcp \
-p 22000:22000/udp \
-p 21027:21027/udp \
-v /home/docker/sync/:/var/syncthing \
syncthing/syncthing:latest

注意这里需要映射文件夹,看你自己情况,如果你已有需要同步的文件夹,请将该文件夹映射到容器内,否则 syncthing 将无法进行同步。

首次进入会警告设置管理员账号和密码,不设置警告不会消失。

20230628151442.png

点击设置的图形用户界面设置即可。

20230628151615.png

同步相关的设置下面再讲,先讲如何搭建发现服务器和中继服务器,如果你不需要可以直接跳过。

2. 发现服务器搭建

发现服务器(Discovery Server)是一种用于帮助设备之间发现彼此并建立连接的服务器。当设备加入 Syncthing 网络时,它会向发现服务器发送请求,以获取其他设备的信息。发现服务器会将设备的信息存储在一个公共数据库中,其他设备在需要连接到新设备时可以通过发现服务器获取到该设备的信息。发现服务器的作用类似于一个中介,帮助设备之间建立连接,但它并不参与实际的文件同步过程。

搭建需要公网,在服务器运行如下命令。

docker run -d \
--name syncthing-discosrv \
-p 8443:8443 \
-v /home/docker/syncthing/discosrv:/var/stdiscosrv \
syncthing/discosrv \
-debug -listen=":8443"

使用 docker logs -f syncthing-discosrv 命令查看日志,获取 device ID。

20230628153211.png

打开客户端,点击设置,选择连接,输入:

https://公网IP:8443/?id=设备id

20230628153625.png

保存后,点击设备发现状态会显示如下。

20230628205238.png

3. 中继服务器搭建

中继服务器(Relay Server)则是一种用于帮助设备之间传输数据的服务器。在某些情况下,设备之间直接进行数据传输可能会受到网络环境的限制,例如设备处于不同的局域网中或者网络防火墙的限制。这时,设备可以通过中继服务器进行数据传输。设备将数据上传到中继服务器,然后其他设备从中继服务器下载数据。中继服务器的作用是帮助设备之间绕过网络限制,实现数据的传输。需要注意的是,中继服务器只在必要时才被使用,大部分情况下设备之间直接进行数据传输。

搭建需要公网,在服务器运行如下命令。

docker run -d \
--name syncthing-relaysrv \
-p 22067:22067 \
-v /home/docker/syncthing/strelaysrv:/var/strelaysrv \
syncthing/relaysrv:latest \
-debug -pools="" -listen=":22067"

使用 docker logs -f syncthing-relaysrv 命令查看日志,获取 Url。

20230628153744.png

将 ip 替换为你自己的公网 ip。

relay://公网IP:22067/?id=设备id

20230628165844.png

保存后,点击侦听程序显示如下内容。

20230628205406.png

到这里搭建发现服务器和中继服务器就完成了,当然,新加入的客户端也要进行同样的操作。

使用

1. 添加设备

当你有两个设备时,如果不进行添加设备是无法进行同步操作的,这个添加设备也相当于是一个授权,是一个相互的操作。

首先查看一台机器的识别码。

20230628210417.png

复制识别码后,在另一台客户端点击添加远程设备进行添加。

20230628210515.png

这里同时可以备注设备名,共享和高级可以等会再设置。

20230628210725.png

然后再回到刚刚那台客户端,同意添加设备。

20230628210953.png

然后就可以在远程设备处看见连接成功了,并可以看见当前是什么连接类型。

20230628211128.png

2. 文件同步

先在测试1机器上添加文件夹 /var/syncthing/test1

20230628221001.png

此时测试1的机器上,/var/syncthing/test1 目录有4个文件,但此时文件夹还是非共享的。

20230628221221.png

点击选择,设置共享给测试2机器。

20230628221311.png

测试2机器将收到共享文件夹的确认信息。

20230628221407.png

我这里将内容同步到 /var/syncthing/tmp 文件夹。

20230628221455.png

等待一会,发现文件已经同步好了。

20230628221542.png

原创文章,作者:mantou,如若转载,请注明出处:https://v2ez.com/930.html

(0)
mantoumantou
上一篇 2023年12月5日
下一篇 2023年12月28日

相关推荐

  • 部署一个无需科学环境的谷歌 Gemini Pro Chat

    很多人NAS不具备谷歌环境以及没有公网IP,访问不太方便,所以有些小伙伴提出能不能做个免科学环境又可以外网访问的,答案是可以的,如果你已经具备了这些条件,那就跟我一起动手来部署吧。…

    2024年1月12日
  • 为什么要用 Git

    〇 版本控制 比如,你晚上写一篇论文,写好了存起来。结果第二天早上起来,你再拿出来一看,害,写的什么啊。早上修改了一大堆,改完了存起来。结果下午一想,害,早上我改什么啊!昨晚那个写…

    代码程序 2024年9月29日
  • Linux VPS一键添加/删除Swap虚拟内存[超实用]

    说明: 很多人的VPS服务器由于内存太小,会导致很多进程被杀掉,这时候就需要我们添加Swap虚拟内存了,之前在一大佬的博客里发现这个非常方便的一键脚本,这里就转载一下——方便懒人或…

    2021年3月20日
  • PHP简洁漂亮的目录程序:files.photo.gallery

    这是一款简洁漂亮的目录程序:files.photo.gallery,直接上传index.php即可使用。 官网:https://files.photo.gallery/ 官网演示:…

    代码程序 2021年4月22日
  • 如何解决GitHub作图床国内无法显示的问题

    最开始我用 WordPress 是直接将图片放到 VPS 上,后来发现转移有些不方便也不好管理,再加上一直是便宜主机,容量也有限。后来我又转到 ya.ru,上传方式和速度都不理想。…

    代码程序 2021年4月20日
  • Azure双栈网络及纯IPV6教程

    前情提要: 采用Cli或者第三方API面板开机可实现双栈网络,本教程为Azure网站手动配置,可避免使用API被风控。我用于演示的服务器是 基本 动态 IPV4 的香港机器,其它情…

    2024年3月6日
  • 在Alist挂载自己的OneDrive网盘

    在之前的文章中,我讲解过如何使用容器云 / VPS搭建Alist。对于Office 365 E5账号,有些小伙伴可以利用这个项目,挂载Alist来实现自动续期的过程。在这篇文章中,…

    2023年7月16日
  • wordpress怎么在导航栏里加图标

    在WordPress中在导航栏里加图标通常可以通过两种方法实现:使用插件或自定义代码。下面分别介绍这两种方法。 方法一:使用插件 1. 在WordPress后台,点击“插件”&gt…

    代码程序 2025年6月7日
  • ChatAIr-ChatGPT 客户端 TF 版发布

    市面上那么多 ChatGPT 客户端,为啥还要重复造轮子 先回答一个可能部分人看到标题就会想到的问题~ 嗯,市面上大部分三方客户端我都用过,用起来也很方便,只是,我长期使用下来后发…

    2023年9月26日
  • VPS路由线路去回程测试及线路分辨

    前言 路由线路分为去程和回程,去程和回程也许并不一样,所以准确的线路测试应该分别测试去程和回程; 并且有些服务商提供的线路在国内不同区域也许并不一致,复杂的网络环境就需要自己去慢慢…

    代码程序 2021年4月3日

发表回复

登录后才能评论