自建中继服务器
如果你已经有自己的公网服务器,而且它离你更近,那么可以优先使用自己搭建的中继服务器,减少官网公共服务器在高峰期拥塞或距离较远带来的影响。
如果用户有自己的公网服务器,而且这台服务器距离自己更近,那么可以优先使用自己搭建的中继服务器。
这样可以尽量避开官网公共服务器在高峰期可能出现的拥塞问题,也能减少因为节点距离较远带来的额外影响。
- 你自己已经有一台公网服务器
- 这台服务器比官网公共节点离你更近
- 你希望优先使用自己的服务器来避开官网公共节点拥塞
登录一台 Ubuntu 20.04 及以上服务器后,直接复制并执行下面这条命令即可。
脚本运行时会提示输入 TURN 密码;如果你留空,它会自动生成一个随机密码。
执行完成后,还需要到云厂商安全组或服务器防火墙放行 3478/tcp、3478/udp 和 10000-11000/udp。
- 准备一台具备公网访问能力的 Ubuntu 20.04 及以上服务器
- 复制并执行下面的一行命令
- 到云厂商安全组或服务器防火墙放行 3478/tcp、3478/udp 和 10000-11000/udp
- 记下脚本输出里的公网 IP、用户名 qdesk 和生成的密码
直接部署
curl -fsSL https://www.quicdesk.com/downloads/coturn/ubuntu20_deploy_turn.sh -o /tmp/qdesk-coturn.sh && sudo bash /tmp/qdesk-coturn.sh登录一台 Ubuntu 20.04 及以上服务器后,直接复制并执行下面这条命令即可。
脚本运行时会提示输入 TURN 密码;如果你留空,它会自动生成一个随机密码。
执行完成后,还需要到云厂商安全组或服务器防火墙放行 3478/tcp、3478/udp 和 10000-11000/udp。
- 准备一台具备公网访问能力的 Ubuntu 20.04 及以上服务器
- 复制并执行下面的一行命令
- 到云厂商安全组或服务器防火墙放行 3478/tcp、3478/udp 和 10000-11000/udp
- 记下脚本输出里的公网 IP、用户名 qdesk 和生成的密码
Docker部署
curl -fsSL https://www.quicdesk.com/downloads/coturn/ubuntu20_deploy_turn_docker.sh -o /tmp/qdesk-coturn-docker.sh && sudo bash /tmp/qdesk-coturn-docker.shDocker 方案更不影响你现有的服务器环境,适合不想直接在系统里安装和清理 coturn 的场景。
当前官网提供的一键脚本仍然建议运行在 Ubuntu 20.04 及以上服务器上,不是其他 OS 的通用一键脚本。
- 安装 coturn,或在 Docker 方案里安装 docker.io 并启动 Docker 服务
- 自动探测 relay-ip 和 external-ip;如果公网 IP 探测失败,脚本会直接退出
- 开放 3478/tcp、3478/udp 和 10000-11000/udp(仅在 UFW 已启用时自动放行)
- 生成固定用户名 qdesk,并提示输入或自动生成 TURN 密码
- 写入 turnserver 配置并启动 coturn 服务或 qdesk-coturn 容器
部署命令执行完成后,终端会输出一段类似下面这样的 TURN 配置。
把这几行完整复制到 QuicDesk 安装目录里的 quicdesk.cfg 中;默认路径是 C:\Program Files (x86)\QuicDesk\quicdesk.cfg。
脚本输出 / quicdesk.cfg 示例
[turn]
addr=turn:1.138.184.129:3478
user=qdesk
pwd=pWTWhKJPp1IH9dkuYdu1最简单的方式是使用 WebRTC 官方的 Trickle ICE 页面做连通性测试。
如果结果里出现 type=relay 的 candidate,说明 TURN 中继已经正常工作。
- 打开 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
- 按下面的示例填写 URI、用户名、密码和 IceTransports
- 点击 Gather candidates,观察结果里是否出现 type=relay
Trickle ICE 推荐填写
URI: turn:<你的公网IP>:3478?transport=udp
Username: qdesk
Credential: <你的TURN密码>
IceTransports: relay如果你需要清理已经部署的中继服务,可以直接执行对应的一行卸载命令。
直接部署和 Docker 部署分别使用不同的卸载脚本。
直接部署卸载命令
curl -fsSL https://www.quicdesk.com/downloads/coturn/ubuntu20_uninstall_turn.sh -o /tmp/qdesk-coturn-uninstall.sh && sudo bash /tmp/qdesk-coturn-uninstall.shDocker部署卸载命令
curl -fsSL https://www.quicdesk.com/downloads/coturn/ubuntu20_uninstall_turn_docker.sh -o /tmp/qdesk-coturn-docker-uninstall.sh && sudo bash /tmp/qdesk-coturn-docker-uninstall.sh- 脚本无法从 icanhazip.com 或 ifconfig.me 探测到公网 IP,通常是服务器出网受限
- 云厂商安全组或防火墙没有放行 3478/tcp、3478/udp 和 10000-11000/udp
- UFW 没有启用时,脚本不会替你修改防火墙;这时仍然需要到云侧手动放行端口
- 复制到 QuicDesk 的公网 IP、用户名 qdesk 或密码与脚本输出不一致