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

如何在Google Cloud部署mediasoup服务器:解决npm报错与TLS配置

解决npm install时SSL证书验证失败问题
  • 临时跳过SSL验证(仅限调试场景,安装完成后建议恢复)
    执行以下命令后重新安装:

    npm config set strict-ssl false
    npm install
    # 安装完成后恢复设置
    npm config set strict-ssl true
    
  • 补充系统CA证书(Debian/Ubuntu系实例)
    系统缺失根证书可能导致SSL验证失败,执行:

    sudo apt update && sudo apt install -y ca-certificates
    sudo update-ca-certificates
    

    完成后重新运行npm install

  • 手动指定OpenSSL下载源
    若官方源访问受阻,可通过环境变量替换为国内镜像源(以OpenSSL 1.1.1w为例):

    export MEDIASOUP_OPENSSL_DOWNLOAD_URL=https://cdn.npmmirror.com/binaries/openssl/1.1.1w/openssl-1.1.1w.tar.gz
    npm install
    
后续TLS证书配置方法
  • 申请免费Let's Encrypt证书
    在Google Cloud实例上安装certbot并申请证书:

    sudo apt install -y certbot
    # 替换your-domain.com为你的实际域名
    sudo certbot certonly --standalone -d your-domain.com
    

    证书文件默认存放在/etc/letsencrypt/live/your-domain.com/,包含fullchain.pem(证书链)和privkey.pem(私钥)

  • 配置mediasoup服务器TLS
    编辑server/config.js,添加/修改TLS配置:

    const fs = require('fs');
    
    module.exports =
    {
      // ...其他配置
      tls:
      {
        cert: fs.readFileSync('/etc/letsencrypt/live/your-domain.com/fullchain.pem'),
        key: fs.readFileSync('/etc/letsencrypt/live/your-domain.com/privkey.pem')
      },
      // ...其他配置
    };
    
  • 配置WebRTC传输TLS
    在创建WebRtcTransport时,确保启用TLS:

    const webRtcTransport = await router.createWebRtcTransport(
      {
        listenIps: [{ ip: '0.0.0.0', announcedIp: 'your-domain.com' }],
        tls: true, // 启用TLS
        // ...其他传输配置
      }
    );
    

    Flutter客户端需使用wss://your-domain.com:3443(默认端口)连接服务器,而非ws://协议。

  • 证书自动续期
    Let's Encrypt证书有效期90天,添加定时任务自动续期:

    sudo crontab -e
    

    在打开的编辑器中添加:

    0 12 * * * /usr/bin/certbot renew --quiet
    

    每天12点自动检查并续期证书。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:26:19