当前位置:   article > 正文

【原创】Syncthing搭建自己的中继服务和发现服务_syncthing中继服务器

syncthing中继服务器

前言

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

这时候就可以通过浏览器访问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,
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

拿到发现服务器的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... 这个报错不用管,等一会之后给他停止掉在重启,你就会发现没问题了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

拿到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

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

大功告成!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/208923
推荐阅读
相关标签
  

闽ICP备14008679号