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=1000 | uid设置,默认为1000 |
-e GID=1000 | gid设置,默认为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=1m30s | ping的发送频率 |
-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=deviceID | relay://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一定要带着,因为删除哪怕在局域网内设备也会通过中继服务器转发流量!!! 发现服务器和中继都是支持多个的,用逗号,分割
在每个Syncthing Client上进行设置:
绿框全部开启,红框填入对应自建服务的地址
自建服务的写法:
自定义中继服务器地址(写在协议监听地址,即第一个红框处)
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项目的发现服务的中继服务
自建发现服务器地址(写在全局发现服务器,即第二个红框处)
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项目的发现服务
通过侦听程序和设备发现的数量,可以判断客户端是否成功连接上了自建服务