前言
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
有不懂的地方可以留言,我看到后会解答文章来源:https://www.toymoban.com/news/detail-572668.html
大功告成!!文章来源地址https://www.toymoban.com/news/detail-572668.html
到了这里,关于【】Syncthing搭建自己的中继服务和发现服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!