前言

syncthing除了客户端,还有中继服务器和发现服务器,如果单纯的只安装客户端,也不是不能用,只不过你的文件要走别人的服务器,才能会进行同步,而且,同步的前提,是你的两台客户端主机都开机。那么怎样把syncthing搞成类似于ondriver或者百度网盘的同步文件夹呢,往下看吧,这篇文章会教你怎么搞

前提是你有一台有公网ip的服务器

资料:

syncthing官方网站:https://syncthing.net/

syncthing官方文档:https://docs.syncthing.net/

注意:

本文章中的所有操作都在虚拟机上完成,该虚拟机并没有公网ip,请各位将虚拟机ip替换为各自服务器的公网ip

准备工作

1.带有公网ip的服务器

2.电脑A

3.电脑B

一、在服务器上安装syncthing

在服务器上安装syncthing是因为服务器是一直开启着的,电脑A与电脑B或者说手机A手机B都无时无刻的可以将文件同步至服务器,当另一台电脑开机时,服务器会自动同步给该电脑,这样就实现了一个云同步盘的功能

syncthing的Git地址:https://github.com/syncthing/syncthing

下载最后一个版本即可

我的服务器是centos7,所以我下载这个即可(文章会老,syncthing更新永不止,建议下载最新版)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
选择自己合适的客户端即可

将syncthing-linux-amd64-v1.23.0.tar.gz压缩包上传至服务器

#解压压缩包
[root@localhost ~]# tar -xvf syncthing-linux-amd64-v1.23.0.tar.gz
#创建文件夹
[root@localhost ~]# mkdir -p /usr/local/syncthing/syncthing
#移动syncthing到新建的文件夹
[root@localhost ~]# mv syncthing-linux-amd64-v1.23.0/* /usr/local/syncthing/syncthing/
#运行
[root@localhost syncthing]# cd /usr/local/syncthing/syncthing/
[root@localhost syncthing]# ./syncthing
[start] 2023/01/29 15:41:55 INFO: syncthing v1.23.0 "Fermium Flea" (go1.19.4 linux-amd64) teamcity@build.syncthing.net 2023-01-02 03:45:30 UTC
[start] 2023/01/29 15:41:55 INFO: Generating ECDSA key and certificate for syncthing...
[start] 2023/01/29 15:41:55 INFO: Default folder created and/or linked to new config
[start] 2023/01/29 15:41:55 INFO: Default config saved. Edit /root/.config/syncthing/config.xml to taste (with Syncthing stopped) or use the GUI
[start] 2023/01/29 15:41:55 INFO: Archiving a copy of old config file format at: /root/.config/syncthing/config.xml.v0
[IDLL3] 2023/01/29 15:41:56 INFO: My ID: IDLL3DS-BBO7MGC-EOE5HEG-EWSUOTG-436WYP4-JE5BK5N-CFXPH4L-F7552A6
[IDLL3] 2023/01/29 15:41:57 INFO: Single thread SHA256 performance is 2042 MB/s using minio/sha256-simd (546 MB/s using crypto/sha256).
[IDLL3] 2023/01/29 15:41:57 INFO: Hashing performance is 1237.74 MB/s
...
...
[IDLL3] 2023/01/29 15:41:57 INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
[IDLL3] 2023/01/29 15:41:57 INFO: TCP listener ([::]:22000) starting
[IDLL3] 2023/01/29 15:41:57 INFO: Using discovery mechanism: IPv4 local broadcast discovery on port 21027
[IDLL3] 2023/01/29 15:41:57 INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or directory
[IDLL3] 2023/01/29 15:41:57 INFO: Creating new HTTPS certificate
[IDLL3] 2023/01/29 15:41:57 INFO: Using discovery mechanism: IPv6 local multicast discovery on address [ff12::8384]:21027
2023/01/29 15:41:57 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.
[IDLL3] 2023/01/29 15:41:57 INFO: QUIC listener ([::]:22000) starting
[IDLL3] 2023/01/29 15:41:57 INFO: GUI and API listening on 127.0.0.1:8384
[IDLL3] 2023/01/29 15:41:57 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
[IDLL3] 2023/01/29 15:41:57 INFO: My name is "localhost.localdomain"
[IDLL3] 2023/01/29 15:41:57 WARNING: Syncthing should not run as a privileged or system user. Please consider using a normal user account.
[IDLL3] 2023/01/29 15:42:07 INFO: Detected 0 NAT services
# 这里可以看到,配置文件在/root/.config/syncthing/config.xml
# 同时也可以看到,他监听的是127.0.0.1:8384,我们拿外部ip访问不到
# 同时还有个WARNING,提示你不应该使用系统用户运行,应使用普通用户运行
# 使用ctrl+c停止掉syncthing,我们去编辑一下配置文件
[root@localhost syncthing]# vim /root/.config/syncthing/config.xml
# 找到127.0.0.1:8384,将其改为0.0.0.0:8384然后退出保存
# 再次启动syncthing
[root@localhost syncthing]# ./syncthing

这时候就可以通过浏览器访问syncthing客户端了,例如http://192.168.217.129:8384/

  • 如果无法访问,看一下防火墙是否开启,syncthing是否正常启动

  • 如果不想对外开启8384端口,可以使用nginx做反向代理,具体操作方法不在赘述,如有需要,可以留言问我,我在详细讲一下

  • 首次启动会提示危险,因为没有设置GUI身份验证设置用户名/密码,这个建议设置一下,安全最重要,密码强度一定要足,因为这是在公网上

  • 搞好之后,可以通过自己的方式让其后台运行即可,后台运行方式多种多样,这里就不在赘述了,我使用的tmux终端复用器,我认为这个非常方便

二、在服务器上搭建发现服务器

公共网络服务其质量良莠不齐,网络也说不清。最好的解决方案仍是本身搭建发现服务器

发现服务器是干嘛的?

官方文档译文:Syncthing 依靠发现服务器在互联网上寻找对等点。任何人都可以运行发现服务器并将 Syncthing 安装指向它。

syncthing发现服务器Git地址:https://github.com/syncthing/discosrv

我是centos,下载stdiscosrv-linux-amd64-v1.18.6.tar.gz即可

将下载好的压缩包上传至服务器

# 创建文件夹,并移动压缩包到指定目录
[root@localhost syncthing]# mkdir -p /usr/local/syncthing/stdiscosrv/
[root@localhost syncthing]# mv stdiscosrv-linux-amd64-v1.18.6.tar.gz /usr/local/syncthing/stdiscosrv/
[root@localhost syncthing]# cd /usr/local/syncthing/stdiscosrv/
# 解压
[root@localhost stdiscosrv]# tar -xvf stdiscosrv-linux-amd64-v1.18.6.tar.gz
[root@localhost stdiscosrv]# cp stdiscosrv-linux-amd64-v1.18.6/* ./
[root@localhost stdiscosrv]# rm -rf stdiscosrv-linux-amd64-v1.18.6 stdiscosrv-linux-amd64-v1.18.6.tar.gz
# 启动
[root@localhost stdiscosrv]# ./stdiscosrv
stdiscosrv v1.18.6 "Fermium Flea" (go1.17.6 linux-amd64) teamcity@build.syncthing.net 2021-12-30 12:07:01 UTC [purego]
Failed to load keypair. Generating one, this might take a while...
Server device ID is OXC5ZJY-ATF6PJB-PZMLORO-MZWPZ67-NBMV3IB-QIOR3H2-QZRW4N5-7MVNGQN
# Failed to load keypair. Generating one, this might take a while... 这个报错不用管,等一会之后给他停止掉在重启,你就会发现没问题了
# 这里会给出发现服务器的id,

拿到发现服务器的id后,将该id填写至你的所有的syncthing客户端中,填写位置如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将default替换为发现服务器的id

替换格式为

https://你的服务器地址:8443/?id=发现服务器ID

如:https://192.168.217.129:8443/?id=OXC5ZJY-ATF6PJB-PZMLORO-MZWPZ67-NBMV3IB-QIOR3H2-QZRW4N5-7MVNGQN

注意:

  • 记得防火墙开启8443端口,发现服务器默认端口为8443,若想更改,可以使用 “./stdiscosrv -listen=你的端口” 来启动
  • 启动没问题后,可以使用自己的方式让其后台运行

三、在服务器上搭建中继服务器

公共网络服务其质量良莠不齐,网络也说不清。最好的解决方案仍是本身搭建中继服务器

中继服务器是干嘛的?

官方译文:Syncthing 依赖于社区贡献的中继服务器网络。任何人都可以运行中继服务器,它会自动加入中继池并可供 Syncthing 用户使用。

Syncthing 中继服务器Git地址:https://github.com/syncthing/relaysrv

我是centos,下载strelaysrv-linux-amd64-v1.22.1.tar.gz即可

将下载好的压缩包上传至服务器

# 创建文件夹,并移动压缩包到指定目录
[root@localhost stdiscosrv]# mkdir -p /usr/local/syncthing/strelaysrv
[root@localhost stdiscosrv]# mv strelaysrv-linux-amd64-v1.22.1.tar.gz /usr/local/syncthing/strelaysrv/
[root@localhost stdiscosrv]# cd /usr/local/syncthing/strelaysrv/
# 解压
[root@localhost strelaysrv]# tar -xvf strelaysrv-linux-amd64-v1.22.1.tar.gz
[root@localhost strelaysrv]# mv strelaysrv-linux-amd64-v1.22.1/* ./
[root@localhost strelaysrv]# rm -rf strelaysrv-linux-amd64-v1.22.1 strelaysrv-linux-amd64-v1.22.1.tar.gz
[root@localhost strelaysrv]# ls
AUTHORS.txt  LICENSE.txt  README.txt  strelaysrv
# 启动
[root@localhost strelaysrv]# ./strelaysrv -pools=""
2023/01/29 17:19:21 main.go:141: strelaysrv v1.22.1 "Fermium Flea" (go1.19.2 linux-amd64) teamcity@build.syncthing.net 2022-11-02 06:27:53 UTC
2023/01/29 17:19:21 main.go:147: Connection limit 3276
2023/01/29 17:19:21 main.go:160: Failed to load keypair. Generating one, this might take a while...
2023/01/29 17:19:21 main.go:259: URI: relay://0.0.0.0:22067/?id=TIYYJ7H-FXFIHQU-RBAJU5M-4CDZ7YP-LXTO6MM-POHIJRQ-FPMD3TO-JH5PHQ2&networkTimeout=2m0s&pingInterval=1m0s&statusAddr=%3A22070
# 这里会给出中继服务器的URL
# Failed to load keypair. Generating one, this might take a while... 这个报错不用管,等一会之后给他停止掉在重启,你就会发现没问题了

拿到URL后,将此URL填写至所有的syncthing客户端中,填写位置如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将default替换为你的中继服务器的URL

替换格式为

relay://你的服务器IP:22067/?id=中继服务器ID&networkTimeout=2m0s&pingInterval=1m0s&statusAddr=%3A22070

如:relay://192.168.217.129:22067/?id=TIYYJ7H-FXFIHQU-RBAJU5M-4CDZ7YP-LXTO6MM-POHIJRQ-FPMD3TO-JH5PHQ2&networkTimeout=2m0s&pingInterval=1m0s&statusAddr=%3A22070

注意:

  • -pools=""参数的意思是不加入任何中继池,可以保持你的中继服务器为私有的
  • 记得开放防火墙22067端口,若想更换端口,可以使用 “-listen=你的端口” 来更改端口

四、其他客户端

至此,服务端的所有操作均已完成,想要同步其他客户端的文件,请从https://github.com/syncthing/syncthing链接中下载各自客户端的程序并运行,并按照服务器上的syncthing来填写中继服务器与发现服务器地址,手机客户端请直接从谷歌商店下载syncthing

有不懂的地方可以留言,我看到后会解答

大功告成!!

【原创】Syncthing搭建自己的中继服务和发现服务相关推荐

  1. consul 日志配置_微服务:服务注册发现+ API 网关+配置中心+服务跟踪+服务熔断...

    服务注册发现 服务注册就是维护一个登记簿,它管理系统内所有的服务地址.当新的服务启动后,它会向登记 簿交待自己的地址信息.服务的依赖方直接向登记簿要 Service Provider 地址就行了.当下 ...

  2. Spring RSocket:基于服务注册发现的 RSocket 负载均衡

    作者 | 雷卷 来源|阿里巴巴云原生公众号 RSocket 分布式通讯协议是 Spring Reactive 的核心内容,从 Spring Framework 5.2 开始,RSocket 已经是 S ...

  3. .net core consul 服务配置 服务发现 服务健康检测 服务变更加载

    准备环境 安装consul之后 1. 创建一个.net core webapi 举例为UsercenterService 2. nuget引用Consul组件  https://github.com/ ...

  4. 深入浅出RPC---4、服务注册发现和健康监测

    服务注册发现 服务注册发现的作用 感知服务端的变化,获取最新服务节点的连接信息. 服务注册发现的处理流程 **服务注册:**服务提供方将对外暴露的接口发布到注册中心内,注册中心为了检测服务的有效状态, ...

  5. python consul配置中心_微服务注册发现配置中心-consul

    Consul详解 近期在微服务业务中用的注册中心,在此简单记录下以备后用. 一 概述 1.1 概念 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.Con ...

  6. android 发现服务,Android服务之网络服务发现服务

    自android 4.1 开始实现了一个网络服务的发现服务NsdService,其基于苹果的Bonjour服务发现协议,支持远程服务的发现和零配置. Bonjour协议包括IP地址的自动分配.服务名称 ...

  7. 微服务架构以及服务治理

    微服务架构以及服务治理 什么是微服务 微服务定义 微服务架构 直连模式 BFF架构 API网关+BFF 微服务拆分 GRPC 什么是RPC GRPC GRPC-HealthCheck健康监测 服务发现 ...

  8. jquery页面跳转带cookie_搭建谷歌浏览器无头模式抓取页面服务,laravelgt;phpgt;pythongt;docker...

    背景: 公司管理系统需要获取企业微信页面的配置参数如企业名.logo.人数等信息并操作,来隐藏相关敏感信息并自定义简化企业号配置流程 第一版已经实现了扫码登录获取cookie,使用该cookie就能获 ...

  9. syncthing下载_Syncthing中继服务器和发现服务器

    这篇文章是附属于我专栏的另一篇文章. 寒三石:Syncthing - P2P文件同步工具​zhuanlan.zhihu.com 1.中继服务器 1.1 服务端部署 此处以Linux为例(准确点说是Ce ...

最新文章

  1. linux 查看lv格式,linux lv pv lv 命令
  2. elasticsearch版本不同,批量查询也不相同
  3. idea xml文件去掉背景黄色
  4. php if终止,php判断用户是否掉线及关闭网页的方法分享
  5. 一个SPS + K2 + InfoPath + Mobile + Exchange的工作流程演示系统
  6. #ifndef#define#endif的用法
  7. [vue]vue路由篇vue-router
  8. androidx86安装pc后无法联网_Ubuntu 16.04 安装显卡驱动后循环登录和无法设置分辨率的一种解决方案
  9. linux网站权限一直自动关闭,奇妙伞-解决SELinux对网站目录权限控制的不当的问题--网上摘抄集合,记录使用...
  10. destoon php文件,Destoon模板制作简明教程
  11. 3dmax材质丢失插件_3dmax找回材质插件怎么用
  12. 提高百度网盘下载速度的方法
  13. Aspose.Words for .NET使用文档教程(5):如何使用脚注和尾注并设置每页行字数
  14. Microsoft Excel 教程:如何在 Excel 中使用条件格式?
  15. 一图看懂西方哲学全脉络
  16. 进入虚拟机的任务管理器命令
  17. Windows动态链接库使用详解
  18. 用计算机视觉描述机器人,一文读懂计算机视觉和机器人视觉
  19. html5一阶段考试题,千锋HTML5-JS阶段第三周理论考试题目02
  20. Win10安装程序报错2503和2502错误解决方案

热门文章

  1. BloomFilter
  2. 两个字符串匹配度算法
  3. 【ESP32_8266_WiFi (十五)】ESP8266 OTA 操作说明
  4. CAR-T疗法新突破
  5. Linux小白式安装Nginx教程
  6. maven使用,Nexus配置阿里云代理仓库,三方仓库,本地仓库
  7. 有限长信号自相关函数的估计
  8. 测试 zxdfasd阿斯顿水电费健康sdgfsdgsg的发oip挥加快了地方噶是的
  9. 分布式--CAP定理
  10. 刘慈欣:元宇宙将是整个人类文明的一次内卷(英文演讲视频)