配置Syncthing发现服务和中继服务

在服务器自建Syncthing发现服务和中继服务用于优化连接和网络传输

写在前面


先前的文章中我已经介绍过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>查看容器日志观察到连接信息,说明服务已经启用生效

转载请注明出处喔!( •̀ ω •́ )✧
发表了46篇文章 · 总计88.65k字
·
Built with Hugo
主题 StackJimmy 设计