自定义中继服务器与接口——绕过官方中继的完整方案
为什么需要自定义中继和接口
上一页介绍了 Docker 私有化部署,本质上就是自己搭建一套信令 + 中继服务,然后让客户端指向自己的服务器。如果 Docker 一键部署的方式太重,或者只需要替换其中的某个组件,BilldDesk 也提供了更灵活的单组件自定义能力:
- 自定义中继服务器:只替换中继组件,信令仍然用官方的
- 自定义接口(wss / api):只替换信令组件(WebSocket 和 REST API)
这三种方式是递进关系:
| 方式 | 替换组件 | 复杂度 | 适用场景 |
|---|---|---|---|
| 只自定义中继服务器 | 仅中继 | 低 | 官方中继不够用 / 自建中继更优 |
| 只自定义接口 | 仅信令 | 中 | 需要自定义鉴权 / 接入企业权限系统 |
| Docker 完整私有化部署 | 全部 | 高 | 数据不出内网 / 企业级需求 |
自定义中继服务器
什么时候只用自定义中继
以下情况只需替换中继服务器,信令仍然可以用官方的:
- 官方中继服务器对你来说延迟太高(比如在海外或特定地区)
- 官方中继服务器被风控,自建中继不受影响
- 想把远程流量全部走自己的服务器中继,增加一层隐私保护
如何搭建自定义中继
BilldDesk 的中继服务器基于 WebRTC TURN 协议(Coturn 或类似实现)。搭建步骤概要:
- 在自己的服务器上安装 Coturn(开源 TURN / STUN 服务器)
- 配置 Coturn 的监听端口(默认 3478/TCP/UDP)
- 配置 Coturn 的认证机制(BilldDesk 客户端连接时需要认证)
- 确保服务器防火墙放行 Coturn 的端口
- 在 BilldDesk 客户端设置中填入自定义中继地址
客户端配置
在 BilldDesk → 高级设置 → 网络设置 → 中继服务器 → 自定义中继中填入:
- 中继服务器地址(如
turn:your-server.com:3478) - 认证用户名
- 认证密码
自定义信令接口
什么时候需要自定义接口
需要替换信令服务器的场景:
- 自定义鉴权逻辑(接入企业权限系统)
- 记录审计日志
- 限制只能特定设备发起远程
BilldDesk 的信令协议
BilldDesk 的信令基于 WebSocket(wss://)。信令交换的内容包括:
- 设备注册与鉴权
- 远程连接请求发起
- 远程连接协商(NAT 穿透候选交换)
- 远程状态同步(在线 / 离线、已连接 / 已断开)
如果自己实现信令服务器,需要完整实现以上 WebSocket 消息协议。这是一个不小的工程,推荐使用 BilldDesk 开源版的信令服务端代码作为起点。
客户端配置
在 BilldDesk → 高级设置 → 网络设置 → 自定义接口中填入:
- WebSocket 信令地址(如
wss://your-signaling.com/socket) - REST API 地址(如
https://your-signaling.com/api)
自定义接口的安全考虑
- 强制 HTTPS / WSS:自定义信令和中继都应该走加密通道
- 认证密钥:自定义接口通常需要配合自定义的设备码 / 连接密码校验逻辑
- CORS 配置:如果有网页端通过 WebRTC 连接自定义信令,需要正确配置 CORS
- TURN 认证:自定义中继需要强制认证,否则任何人都可以用你的中继服务器转发流量
与 Pro 源码的关系
如果购买了 BilldDesk Pro 的源码(¥19999 起),可以获得完整的服务端源码,包括:
billd-desk-server-pro:信令 + 中继服务端billd-desk-admin-pro:后台管理界面billd-desk-pro:桌面端客户端源码billd-desk-flutter-pro:移动端客户端源码
拿到源码后可以自由修改、二次开发、部署到自己的服务器上。
开源版 vs Pro 源码的接口能力
| 对比项 | 开源版(GitHub) | Pro 源码(付费) |
|---|---|---|
| 中继接口 | 基础能力 | 完整能力 |
| 信令接口 | 基础能力 | 完整能力 |
| 自定义鉴权 | 有限 | 完整支持 |
| 后台管理 | 无 | 完整 |
| 文档 | README | 完整开发文档 |
| 商业支持 | 社区 Issue | 直接联系作者 |