You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pion自定义SFU服务器本地及物理机运行正常,Docker内部署失效问题咨询

问题排查方案
  • 配置公网IP宣告
    Pion WebRTC默认会读取容器内部的私有IP作为ICE候选下发给客户端,该IP无法被公网客户端访问,是该场景下最常见的故障原因。你需要在服务端代码的SettingEngine中添加公网IP配置:
// 替换为你的宿主机公网IP
se.SetNAT1To1IPs([]string{"你的宿主机公网IP"}, webrtc.ICECandidateTypeHost)

如果你的公网IP不固定,也可以给服务端配置STUN服务器,让服务端自动发现公网IP。

  • 检查公网端口放通规则
    需要同时确认两层规则是否放通50000-50200/udp端口段的入站流量:
  1. 宿主机本地防火墙(firewalld/ufw等)
  2. 云服务商控制台的安全组/ACL规则
    你可以通过nc命令测试端口连通性:在公网环境执行nc -u <宿主机公网IP> <50000-50200范围内的端口>,确认可以连通。
  • 验证ICE候选交换逻辑
  1. 客户端可以打开chrome://webrtc-internals页面,查看ICE候选交换情况,确认是否收到了服务端的公网IP候选,以及候选配对是否成功。
  2. 服务端开启Pion的Debug日志,查看ICE候选收集结果,确认是否有公网IP的候选生成。
  • 临时验证方案缩小范围
    你可以临时将docker-compose中app服务的网络模式改为host,删除原有的ports配置后重启服务测试:
services:
  app:
    # 其他配置保持不变
    network_mode: "host"
    # 删除原有的ports配置

如果修改为host网络后服务恢复正常,就可以确认故障原因是端口映射或者NAT宣告配置问题,无需排查其他逻辑。

  • 检查STUN/TURN可用性
    先单独验证你使用的免费TURN服务器是否可用,部分公共TURN服务器存在可用性不稳定、带宽限制的问题,会导致ICE中继失败。

内容的提问来源于stack exchange,提问作者jalanga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:57:02