• 搜索
  • 夜间模式
    ©2012-2026  陈十一的小破站 Theme by OneBlog

    陈十一的小破站博客

    搜索
    标签
    # Nodejs # CentOS # Git # Golang # Docker # Windows # Nginx # 反向代理 # 脚本 # Linux
  • 首页>
  • 技术>
  • 正文
  • 使用Docker无痛部署Coturn(ICE信令服务)

    2025年05月31日 1.6 k 阅读 0 评论 3217 字

    为什么选择Coturn?

    Coturn是开源的TURN/STUN服务器,解决WebRTC通信中的NAT穿透问题。通过Docker部署可避免环境依赖问题,实现快速搭建高可用ICE服务。


    完整部署流程

    1. 宿主机准备
    # 创建配置目录
    mkdir -p /opt/docker/coturn/{ssl,compose}
    
    # 下载默认配置文件
    cd /opt/docker/coturn
    wget -O turnserver.conf https://raw.githubusercontent.com/coturn/coturn/master/docker/coturn/turnserver.conf
    cp turnserver.conf turnserver.conf.default  # 备份原始配置
    
    # 生成自签名SSL证书(重要:生产环境建议使用Let's Encrypt)
    cd ssl
    openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes \
      -keyout privatekey.pem -out certificate.pem \
      -subj "/CN=yourdomain.com"  # 替换为你的域名
    2. 关键配置修改

    编辑配置文件 vim /opt/docker/coturn/turnserver.conf:

    # 网络配置
    listening-port=3478
    tls-listening-port=5349
    listening-ip=192.168.1.10       # 内网IP(通过ip addr show eth0查看)
    external-ip=203.0.113.5         # 公网IP(必须正确!)
    realm=turn.yourdomain.com       # 域名或公网IP
    
    # 认证设置
    user=myuser:mypassword          # 格式:用户名:密码(建议强密码)
    
    # 证书路径(映射到容器内)
    cert=/etc/coturn/ssl/certificate.pem
    pkey=/etc/coturn/ssl/privatekey.pem
    
    # 安全增强
    no-stdout-log                   # 禁用明文日志
    stale-nonce=300                 # 防止重放攻击
    min-port=49152
    max-port=65535
    
    # CLI管理(可选)
    cli-ip=127.0.0.1                # 限制本地访问
    cli-port=5766
    cli-password=YourSecureCLIPwd   # 修改默认密码!
    3. Docker Compose部署

    创建 vim /opt/docker/coturn/compose/docker-compose.yml:

    version: '3.8'
    services:
      coturn:
        image: coturn/coturn:4.6.3
        container_name: coturn
        restart: unless-stopped
        volumes:
          - /opt/docker/coturn/turnserver.conf:/etc/coturn/turnserver.conf
          - /opt/docker/coturn/ssl:/etc/coturn/ssl
        network_mode: "host"       # 必须使用host模式
    4. 启动服务
    cd /opt/docker/coturn/compose
    docker compose up -d  # 后台运行
    
    # 查看日志验证
    docker logs -f coturn | grep "listening"
    # 预期输出: 
    # 0: : Listening on: 203.0.113.5:3478
    # 0: : Listening on: 203.0.113.5:5349

    服务验证

    访问 WebRTC ICE测试工具:

    1. URI格式

      turn:203.0.113.5:3478?transport=udp
      turn:turn.yourdomain.com:5349?transport=tcp
    2. 认证信息

      • Username: myuser
      • Password: mypassword
    3. 成功标志
      出现 relay 类型候选地址即表示中继服务正常:

      srflx   | udp | 203.0.113.5:63412    # 反射地址(NAT穿透)
      relay   | udp | 203.0.113.5:51234    # 中继地址(关键!)

    常见问题排查

    1. 无relay候选地址?

      • 检查防火墙:确保UDP端口开放(尤其49152-65535)
      • 验证external-ip配置:必须与服务器公网IP一致
      • 测试端口连通性:nc -zv 203.0.113.5 3478
    2. TLS证书错误?

      • 浏览器访问 https://turn.yourdomain.com:5349 检查证书有效性
      • 更新证书:替换ssl/目录文件后重启容器
    3. 性能优化建议

      # 增加线程数(根据CPU核心数调整)
      thread-num=8
      # 限制用户带宽
      user-quota=1200  # 单位:KB/s
      total-quota=12000

    安全加固措施

    1. 禁止匿名访问:移除配置中的 no-auth 选项
    2. 定期轮换密码:通过 user=新用户名:新密码 动态更新
    3. 防火墙规则:仅允许信令服务器IP访问3478/5349端口
    4. 日志审计:挂载日志卷 - ./logs:/var/log/coturn

    最终效果:您的WebRTC应用将获得稳定的NAT穿透能力,支持1:1通话至千人直播场景。部署过程仅需10分钟,更新时只需替换镜像版本和配置文件!

    延伸阅读:结合Traefik反向代理实现自动HTTPS证书续签,进一步提升生产环境可靠性。

    本文著作权归作者 [ 陈十一 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    CoturnICE
    — END —
    Copyright©2012-2026  All Rights Reserved.  Load:0.015 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。