Quicdesk - High-performance remote desktop

自建中继服务器

如果你已经有自己的公网服务器,而且它离你更近,那么可以优先使用自己搭建的中继服务器,减少官网公共服务器在高峰期拥塞或距离较远带来的影响。

如果用户有自己的公网服务器,而且这台服务器距离自己更近,那么可以优先使用自己搭建的中继服务器。

这样可以尽量避开官网公共服务器在高峰期可能出现的拥塞问题,也能减少因为节点距离较远带来的额外影响。

  • 你自己已经有一台公网服务器
  • 这台服务器比官网公共节点离你更近
  • 你希望优先使用自己的服务器来避开官网公共节点拥塞

登录一台 Ubuntu 20.04 及以上服务器后,直接复制并执行下面这条命令即可。

脚本运行时会提示输入 TURN 密码;如果你留空,它会自动生成一个随机密码。

执行完成后,还需要到云厂商安全组或服务器防火墙放行 3478/tcp、3478/udp 和 10000-11000/udp。

  1. 准备一台具备公网访问能力的 Ubuntu 20.04 及以上服务器
  2. 复制并执行下面的一行命令
  3. 到云厂商安全组或服务器防火墙放行 3478/tcp、3478/udp 和 10000-11000/udp
  4. 记下脚本输出里的公网 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。

  1. 准备一台具备公网访问能力的 Ubuntu 20.04 及以上服务器
  2. 复制并执行下面的一行命令
  3. 到云厂商安全组或服务器防火墙放行 3478/tcp、3478/udp 和 10000-11000/udp
  4. 记下脚本输出里的公网 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.sh

Docker 方案更不影响你现有的服务器环境,适合不想直接在系统里安装和清理 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 中继已经正常工作。

  1. 打开 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
  2. 按下面的示例填写 URI、用户名、密码和 IceTransports
  3. 点击 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.sh

Docker部署卸载命令

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 或密码与脚本输出不一致