docker自建Syncthing的发现服务器和中继服务器

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

拉取镜像

docker pull johngong/syncthing-relay-discosrv:latest

创建镜像

docker create \
--name=syncthing-relay-discosrv \
-p 22067:22067 \
-p 22070:22070 \
-p 8443:8443 \
-e PROVIDED_BY=" ‍  www.xxdl.xyz" \
-e GLOBAL_RATE=2000000 \
-e POOLS="https://relays.syncthing.net/endpoint" \
--restart unless-stopped \
johngong/syncthing-relay-discosrv:latest
#22067 :中继的数据端口,用于数据连接
#22070 :中继的状态端口用于汇报数据

# 运行
docker start syncthing-relay-discosrv
# 停止
docker stop syncthing-relay-discosrv
# 删除
docker rm  syncthing-relay-discosrv
# 查看日志
docker logs syncthing-relay-discosrv

注意: 当使用上面的命令运行后,会提示: Joining default relay pools, this relay will be available for public use. Use the -pools=”” command line option to make the relay private.
意思就是你加入了公共的中继池,可被别人发现和使用,如果不想加入公共的,需要把设置 -e POOLS=””才行 从下面的变量复制命令后会报错,需要检查格式和缩进

变量:

参数说明
–name=syncthing-relay-discosrv容器名
-p 22067:22067同步中继服务器协议监听端口
-p 22070:22070同步中继服务器服务状态监听端口
-p 8443:8443同步发现服务器监听端口
-v /配置文件位置:/config可不设置,/config/discosrvdb为同步发现服务器数据库位置;/config/certs为服务器证书位置,设置后证书不变,重装后 device ID不变
-e UID=1000uid设置,默认为1000
-e GID=1000gid设置,默认为1000
-e GLOBAL_RATE=100000000全局速率限制 单位为bytes/s
-e PER_SESSION_RATE=10000000每个会话速率限制 单位为bytes/s
-e MESSAGE_TIMEOUT=1m30s等待相关消息到达的最长时间
-e NATWORK_TIMEOUT=3m0s客户端和中继服务器之间的操作超时时间
-e PING_INTERVAL=1m30sping的发送频率
-e PROVIDED_BY=”strelaysrv”中继提供者
-e POOLS=中继服务器地址列表,如果不填则为私有中继
-e DISCO_OTHER_OPTION=同步发现服务器其它自添加选项,-debug -http -listen -metrics -listen -replicate -replication-listen,选项说明详见:https://docs.syncthing.net/users/stdiscosrv.html
-e RELAY_OTHER_OPTION=同步中继服务器其它自添加选项,-debug -ext-address -listen -nat -nat-lease -nat-renewal -nat-timeout -protocol -status-srv,选项说明详见:https://docs.syncthing.net/user

使用中继和发现服务器
1.先获取deviceID

docker logs syncthing-relay-discosrv
# Server device ID is DG5LEG6-5YUOBMY-33IYXFE-EIRQW4E-MADRY5R-XRSCBKX-H7QSTCB-6M2KXAW

2.来到客户端配置处,打开 界面- 操作-设置-连接页面

名称例子实际
协议监听地址relay://ip或域名:本地端口1/?id=deviceIDrelay://strelaysrv.devitem.top:22067/?id=DG5LEG6-5YUOBMY-33IYXFE-EIRQW4E-MADRY5R-XRSCBKX-H7QSTCB-6M2KXAW
全球发现服务器https://ip或域名:本地端口3/?id=deviceID,https://stdiscosrv.devitem.top:8443

重要的注意事项!!!

如果你只想使用自建的发现服务器,就把全局发现服务器里面的default删除,否则就填入defalut,发现服务器地址.但是协议监听地址的default一定要带着,因为删除哪怕在局域网内设备也会通过中继服务器转发流量!!! 发现服务器和中继都是支持多个的,用逗号,分割

docker自建Syncthing的发现服务器和中继服务器

在每个Syncthing Client上进行设置:
绿框全部开启,红框填入对应自建服务的地址

自建服务的写法:

  1. 自定义中继服务器地址(写在协议监听地址,即第一个红框处)

    relay://公网IP:22067?id=自建中继服务器device ID

    推荐写成:

    default,relay://公网IP:22067/?id=自建中继服务器device ID

default等价于tcp://0.0.0.0:22000, quic://0.0.0.0:22000 和dynamic+https://relays.syncthing.net/endpoint .同样也是利用Syncthing项目的发现服务的中继服务

  1. 自建发现服务器地址(写在全局发现服务器,即第二个红框处)

    https://公网IP:8443/?id=自建发现服务器device ID

    推荐写成:

    default,https://公网IP:8443/?id=自建发现服务器device ID

default等价于https://discovery-v4.syncthing.net/v2/, https://discovery-v6.syncthing.net/v2/https://discovery.syncthing.net/v2/ ,也就是利用Syncthing项目的发现服务

通过侦听程序和设备发现的数量,可以判断客户端是否成功连接上了自建服务
docker自建Syncthing的发现服务器和中继服务器

<<小米盒子1S(MDZ-06-AA)拆机及降级教程分享istore插件zerotier-cli添加moon节点报错解决方法>>

有话要说:

top