写在前面
在先前的文章中我已经介绍过Syncthing服务,如有需要可以点进去查看
但是在使用的时候会发现,对等点之间连接信号经常不稳定,并且数据传输缓慢,这是由于我们默认使用的是官方提供的公共发现服务器和中继服务器集群,在这里查看官方提供的中继服务器。由于这些发现服务器和中继服务器大多在国外(虽然国内也有,但网络时好时坏),通常延迟高,网络差,因此导致对等点连接不稳定的问题
所以为了优化网络数据传输,我们可以选择在一台与国内互联较好服务器上自行托管发现服务和中继服务使用
部署也很方便,下面将简单介绍一下
部署
有关发现服务器和中继服务器的详细介绍可以查看以下官方文档
下面我们将直接利用Docker同时部署发现服务和中继服务
新建一个存放容器配置的目录,创建docker-compose.yml
文件,并写入以下内容
services:
syncthing_discovery_server:
image: syncthing/discosrv:latest
container_name: stdiscosrv
command: --debug --listen=":8443"
environment:
- PUID=1000
- PGID=1000
volumes:
- ./syncthing/discosrv:/var/stdiscosrv
ports:
- 8443:8443
restart: always
syncthing_relay_server:
image: syncthing/relaysrv:latest
container_name: strelaysrv
command: -debug -pools="" -listen=":22067"
environment:
- PUID=1000
- PGID=1000
volumes:
- ./syncthing/strelaysrv:/var/strelaysrv
ports:
- 22067:22067
restart: always
然后执行docker compose up -d
启动两个容器服务
启动后,我们需要执行docker ps
找到两个容器,然后执行docker logs <container_id>
通过日志查看发现服务和中继服务的Device ID
- 发现服务器(示例)
# docker logs 1f5a691d72f8 2025/03/17 08:56:58 stdiscosrv v1.29.3 "Gold Grasshopper" (go1.24.1 linux-amd64) [email protected] 2025-03-07 11:50:33 UTC [noupgrade] 2025/03/17 08:56:58 Failed to load keypair. Generating one, this might take a while... 2025/03/17 08:56:58 Server device ID is KTYXYMX-N3J7VZX-QO5CD47-DRTFUGG-WKKOFY3-6A4EJ3Y-X5VXTIP-RWI32QP
可以找到Device ID为KTYXYMX-N3J7VZX-QO5CD47-DRTFUGG-WKKOFY3-6A4EJ3Y-X5VXTIP-RWI32QP
- 中继服务器(示例)
# docker logs b5e1e74ae3ff 2025/03/17 08:56:58 main.go:141: strelaysrv v1.29.3 "Gold Grasshopper" (go1.24.1 linux-amd64) [email protected] 2025-03-07 11:50:33 UTC [noupgrade] 2025/03/17 08:56:58 main.go:147: Connection limit 838860 2025/03/17 08:56:58 main.go:160: Failed to load keypair. Generating one, this might take a while... 2025/03/17 08:56:58 main.go:186: ID: NNO7VN5-JNNI35L-3D2S4ER-W4WXCOM-KHA7E2L-N5I5K5Q-R5KB3BN-DC6NWA7 2025/03/17 08:56:58 main.go:267: URI: relay://0.0.0.0:22067/?id=NNO7VN5-JNNI35L-3D2S4ER-W4WXCOM-KHA7E2L-N5I5K5Q-R5KB3BN-DC6NWA7&networkTimeout=2m0s&pingInterval=1m0s&statusAddr=%3A22070
可以找到Device ID为NNO7VN5-JNNI35L-3D2S4ER-W4WXCOM-KHA7E2L-N5I5K5Q-R5KB3BN-DC6NWA7
然后我们就得到了发现服务和中继服务的URL
发现服务器:https://<Server_IP>:8443/?id=<发现服务器Device_ID>
中继服务器:relay://<Server_IP>:22067?id=<中继服务器Device_ID>
到此为止就部署完成啦
在Syncthing中配置使用
接下来,我们在搭建了Syncthing的机器上配置使用自己的发现服务和中继服务
首先打开Syncthing Web配置网页,然后在右上角点击操作
- 设置
- 连接
,打开后将同步协议监听地址
的default
替换为default,relay://<Server_IP>:22067?id=<中继服务器Device_ID>
,然后将全局发现服务器
的default
替换为default,https://<Server_IP>:8443/?id=<发现服务器Device_ID>
,然后点击保存就完成啦
最后,可以通过在服务器上使用docker logs <container_id>
查看容器日志观察到连接信息,说明服务已经启用生效