如何在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
相关产品推荐
相关产品推荐

