尧图精选

如何快速搭建 Syncthing 私有中继服务器:strelaysrv 部署完整指南

🕒 发布时间:2026/10/1 8:55:35 📁 来源:尧图网络
如何快速搭建 Syncthing 私有中继服务器strelaysrv 部署完整指南【免费下载链接】syncthingOpen Source Continuous File Synchronization项目地址: https://gitcode.com/GitHub_Trending/sy/syncthing两台 Syncthing 设备反复显示连接失败日志提示 NAT 或端口不可达直连已经没戏了。这时只要你有台能拿到公网 IP或能做端口转发的机器愿意让它多跑一份流量strelaysrv 就能把这条同步链路救回来。本文按“最小路径 → 按需选择 → 自检 → 长期运维”的顺序带你从零把一台 Syncthing 中继服务器跑通。什么时候该用它、什么时候别用strelaysrv 是 Syncthing 官方的中继服务器程序两台设备无法 P2P 直连时它们各自连上同一台中继由中继在中间转发字节流它自己不解析、不保存你的同步数据。两端直连受阻、且你有一台公网可达的机器时该上它如果两端本来就能直连别用——中继只增加延迟和带宽成本。版本前提客户端 Syncthing 需 v0.12 及以上。动手前准备本节目标把环境一次性备齐后面所有步骤不再回头补坑。一台公网可达的 Linux 机器TCP22067空闲且对外开放中继主协议端口必需若打算接入公共中继池还需开放22070/status指标端口纯私有部署可不管防火墙放行规则可直接抄仓库自带的 UFW 配置只放行 22067/tcp 与 22070/tcp 两项见 cmd/strelaysrv/etc/firewall-ufw/strelaysrv证书不用操心首次启动会自动生成cert.pem/key.pem有效期 20 年存放在工作目录即可。最快跑起来⚠️ 先说风险不带参数直接启动strelaysrv默认会注册进公共中继池你的带宽将被全网用户消耗。只服务自己设备的务必带上-pools./strelaysrv -pools成功长什么样日志里打印一行以URI:开头的地址形如relay://:22067/?idEZQOIDM-...pingInterval1m0snetworkTimeout2m0sstatusAddr:22070。注意主机部分是空的——因为默认监听:22067程序不知道你对外是什么 IP。把主机部分换成你的公网 IP就得到了可以交给客户端的完整中继地址例如relay://192.0.2.1:22067/?id...。不关心证书固定与参数透传的话也可以只给简化形式relay://192.0.2.1:22067。几个关键选择本节目标按你的场景决定三组参数的取值。公共还是私有。想服务社区就不要传-pools日志出现Joined pool https://relays.syncthing.net/endpoint, rejoining in 48m0s表示注册成功池端给出驱逐倒计时中继在 80% 时间点自动重注册属正常循环。只给自己设备用用-pools完全跳过池注册。限不限带宽。两个参数都以字节/秒为单位0表示不限-per-session-rate管单会话-global-rate管整机总量比如-global-rate 5242880约等于 5 MB/s。要不要令牌。只允许特定客户端接入时用-token...设置后会自动禁用一切池加入令牌不匹配的连接直接断开。运行后看什么本节目标只盯 3 个真正有用的信号不追求逐字段解读。curl http://127.0.0.1:22070/status返回的 JSON 中重点看numActiveSessions活跃会话数和kbps10s1m5m15m30m60m10 秒到 60 分钟共 6 档吞吐率前者证明中继真的在工作后者告诉你带宽实际烧得有多快options字段会原样回显启动参数远程核对限流值、池地址是否符合预期最可靠启动时的Connection limit行程序按系统文件描述符上限的 80% 估算并发能力若运行中反复出现Gone past our connection limits...说明正在拒绝新连接该提升 ulimit 或降并发了。私有部署不想暴露指标端口时加-status-srv即可整个关闭该端点。用 testutil 自检本节目标不依赖真实同步任务几分钟验证中继链路是否健康。工具位于 cmd/strelaysrv/testutil/使用前需要准备两套证书目录cert.pem/key.pem服务端那套必须与中继实际加载的一致否则 TLS 握手不过。最快的方式是一键自检./testutil -relayrelay://192.0.2.1:22067 -keyscerts/client/ -test预期输出OK失败会打印FAIL及原因。想完整验证“两端经中继对话”终端 A 用-join加入并记下它打印的ID: BG2C5ZA-...终端 B 用-connect该ID发起连接。成功后两个终端变成交互式输入框在 A 里敲字、B 里显示转发能力一目了然。交给 systemd 长期运行本节目标只改三处其余照抄模板。仓库自带单元文件 cmd/strelaysrv/etc/linux-systemd/strelaysrv.service落地时需要对齐运行目录WorkingDirectory/var/lib/syncthing-relaysrv证书就放这里并保证运行账号有写权限外部选项文件EnvironmentFile/etc/default/syncthing-relaysrv把你的全部启动参数写进RELAYSRV_OPTS...NATtrue控制是否启用 UPnP 端口映射运行账号模板默认Usersyncthing-relaysrv自建系统时先创建该用户。ProtectSystem、PrivateTmp、MemoryDenyWriteExecute等加固开关模板里已配好保持原样不要放松。出问题时的排查清单启动时刷出多行“Joining default relay pools”警告 → 忘了-pools停掉重启并补上参数Failed to join ...: under load (rate limiting)→ 池端 429 限流程序一分钟自动重试持续出现就换个低峰时段再注册IP address not matching external address→ 池服务器发现你通告的地址与真实出口 IP 对不上多为端口转发或公网 IP 配错且该状态会直接放弃加入客户端连不上中继 → 先跑testutil -test确认 22067 公网可达再查防火墙与转发规则客户端被拒绝接入 → 对照日志确认是令牌不匹配还是连接数超限RelayFull换过证书后连不上 → 检查-keys目录里放的是不是进程真正加载的那份证书。收工前逐项核对testutil -test返回OK22067 公网可达私有部署确认带了-pools公共部署日志能看到Joined pool ... rejoining in ...中继 URI 的主机部分已替换为公网 IPURI 已填入客户端“Actions → Settings → Sync Protocol Listen Address”字段限流参数字节/秒已按预期设置并通过/status的options字段复核/status端口保留给池端读指标或已用-status-srv显式关闭服务运行目录与证书目录一致证书文件归运行账号所有延伸阅读完整说明文档cmd/strelaysrv/README.md命令行手册页man/strelaysrv.1中继线协议定义深入握手与转发机制时看这里lib/relay/protocol/【免费下载链接】syncthingOpen Source Continuous File Synchronization项目地址: https://gitcode.com/GitHub_Trending/sy/syncthing创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →