【WebRTC全流程】livekit配置免费的cloudflare turn服务
下边是几种部署livekit的方式
| 部署模式 | ssl/tls证书 | turn/stun | 域名 | 备注 | 文档 |
|---|---|---|---|---|---|
| 纯内网 | 不需要 | 不需要 | 不需要 | https://pidan.dev/20250715/webrtc-livekit-deploy-with-no-tls/ | |
| 公网 | 需要 | all in one自带turn | 需要 | 不支持自签证书 | 官方模式 https://pidan.dev/20250721/webrtc-livekit-deploy-with-tls/ |
| 公网 | 需要 | 使用第三方turn | 需要 | 不支持自签证书 | https://pidan.dev/20250722/webrtc-livekit-deploy-config-turn-server/ |
我们要turn干啥?
一些关键概念:
- TURN(Traversal Using Relays around NAT)是一种协议,可协助遍历网络地址转换器 (NAT) 或防火墙,以促进点对点通信。它是 STUN(NAT 会话遍历实用程序)协议的扩展,在
RFC 8656中定义。 - NAT(网络地址转换):路由器用于将多个私有 IP 地址映射到单个公共 IP 地址的方法。这通常由家庭互联网路由器完成,因此同一网络中的多台计算机可以共享一个公共 IP 地址。
- TURN 服务器:一种中继服务器,充当 NAT 后客户端之间流量的中介。Cloudflare Realtime TURN 服务是 TURN 服务器的一个示例。
- TURN 客户端:使用 TURN 协议通过 TURN 服务器进行通信的应用程序或设备。这是您的应用程序。它可以是使用 WebRTC API 的 Web 应用程序,也可以是在移动设备或桌面上运行的本机应用程序。
- 分配:当 TURN 服务器创建分配时,TURN 服务器会保留该客户端唯一的 IP 和端口。
- 中继传输地址:在 TURN 服务器上保留的 IP 地址和端口,Internet 上的其他人可以使用它来向 TURN 客户端发送数据。
TURN工作原理:
- TURN 客户端向 TURN 服务器发送 Allocate 请求。
- TURN 服务器创建分配并将中继传输地址返回给客户端。
- 然后,客户端可以将此中继地址提供给其对等方。
- 当对等方向中继地址发送数据时,TURN 服务器将其转发给客户端。
- 当客户端想要将数据发送到对等方时,它会通过 TURN 服务器发送数据,然后 TURN 服务器将其转发给对等方。
创建免费的cloudflare turn服务器
注册登录,在cloudflare控制台找到Realtime-TURN服务器,开通它的免费套餐(需要信用卡),有1000GB的免费出站流量,入站免费。(cloudflare就是活菩萨)

点击创建,设置一个名字(使用默认就名字就好),创建后,页面会展示你的凭据,务必保存这些信息,关掉就没了。
然后在这个页面的下边找到cloudflare提供的curl命令,直接找个支持curl的terminal执行,就会得到类似如下信息:
1 | { |
cloudflare的逻辑就是,先给你一个父秘钥,用它创建子账号和密码,你使用子账户密码访问turn服务,username就是你的turn账户名,credential就是你的turn密码,urls就是你的turn地址,地址给你了很多,某些可能你访问不通,可以都用ICE测试页面测一下,建议先选turn.cloudflare.com:443这个大概率是可以用的。
我们去ICE测试页面测一下是不是通的,填写刚才你的turn地址和账号密码:

这样就是可用了。
然后我们来到livekit.yml配置文件里填写:
https://github.com/livekit/livekit/blob/master/config-sample.yaml 官方的配置文件示例也给你贴出来
1 | port: 7880 |
1 | docker compose up -d |
这时候我们livekit网页版进入会议室,并可以进行音视频对话了。

livekit网页版:https://meet.livekit.io/?tab=custom
livekit官方会议室连通性测试页面:https://livekit.io/connection-test
cloudflare turn官方文档 https://developers.cloudflare.com/realtime/turn/