我正在构建一个需要 Coturn 服务器的 WebRTC 项目。我是 努力设置本地主机版本以用于开发。请 不建议使用第三方 TURN 服务器。我一直在使用它们 到目前为止,已经出现了不一致的连接和延迟问题,因此 现在打算举办一场。
该项目正在使用
docker
。我使用的 coturn
图像是
https://github.com/kevzettler/coturnDockerLongTermCredentials
我正在尝试手动
docker run
容器并使其工作。
docker run \
--name turnserver \
--net=host \
-e "TURN_PORT_START=49152" \
-e "TURN_PORT_END=65535" \
-e "TURN_REALM=projectName" \
-d \
-t \
meetrix/coturn-long-term-cred
测试与我正在使用的 Turn 服务器的连接 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 并将其指向
turn:0.0.0.0
我能够在生产托管计算机上执行此操作,并使用trickle-ice 页面成功连接。然而,本地主机失败了。
我想获得本地 Coturn 设置,以便我可以离线开发。我认为主要问题是开放端口。
Coturn 预计将开放大量港口
49152-65535
。如果我们更新
docker 命令显式公开这些端口,例如:
docker run \
--name turnserver \
-p 3478:3478/udp \
-p 3478:3478 \
-p 49152-65535:49152-65535/udp \
-e "TURN_PORT_START=49152" \
-e "TURN_PORT_END=65535" \
-e "TURN_REALM=projectname" \
-d \
-t \
meetrix/coturn-long-term-cred
docker 守护进程将会崩溃。
这就是为什么初始运行命令和生产使用
--net=host
。 --net=host
将会
使用主机防火墙而不是 dockers
。
主机 此本地开发环境是 macOS Sierra。我怀疑端口 在
--net=host
场景中,未在 macOS 级别打开。
记住 - Mac 或 Windows 不支持 docker 主机网络驱动程序,因此它只能在 Linux 主机上工作。更多详细信息可以在这里找到:https://docs.docker.com/network/drivers/host/
所以做的时候
docker run --rm --network host coturn/coturn:alpine
端口在本地主机上不可用。
您需要显式映射端口