VIDEO CHAT / 使用与部署记录

视频通话教程

本栏目只记录视频项目的使用、独立部署和排查过程。更新日期:2026-09-15。

正式入口:https://video.shanbo-rig.com/ · HTTPS 已启用,HTTP 域名访问自动跳转。

01 · 开始使用

  1. 打开首页,在设置中填写昵称。
  2. 输入房间号和可选密码,创建房间;另一位参与者选择相同房间加入。
  3. 在聊天室发送文字,验证成员列表和消息同步。
  4. 通过 HTTPS 或本机 localhost 访问时,允许浏览器使用摄像头和麦克风,再测试静音、摄像头、屏幕共享。
  5. 字幕翻译在设置中启用;付费翻译服务需要自行配置 API 密钥。

正式域名 HTTPS 已启用,浏览器可在安全上下文中申请媒体权限。首页、聊天室与加密信令已验证;双设备摄像头、麦克风、屏幕共享和跨网络媒体通话仍需实际测试。IP + HTTP 仅保留为基础连通性测试入口。

02 · 独立部署配置

项目配置
代码目录/www/wwwroot/webrtc-video-chat
服务 / 运行用户webrtc-video
内部监听127.0.0.1:3100
独立数据/var/lib/webrtc-video
环境配置/etc/webrtc-video.env(仅 root 可读)
正式域名video.shanbo-rig.com(HTTPS 已上线)
  1. 先检查端口和目标目录是否空闲,确认已有 Nginx 配置检查通过。
  2. 拉取代码,使用官方源安装生产依赖。
  3. 配置独立用户、环境变量和 systemd 服务。服务最多使用 512 MB 内存和相当于一个 CPU 核心的额度。
  4. 独立 Nginx 站点把 HTTP 页面、Socket.IO 与 PeerJS 统一转发到 3100;保留 WebSocket 升级头。
  5. 先检查 Nginx 配置,再平滑重载,最后验证页面、信令和聊天室。
npm install --omit=dev --package-lock=false --registry=https://registry.npmjs.org
systemctl status webrtc-video --no-pager
journalctl -u webrtc-video -n 50 --no-pager
curl -I http://127.0.0.1:3100/
nginx -t

更新或重启只针对 webrtc-video 服务;不要使用批量重启全部服务的命令。

03 · 本次问题与处理

npm 下载依赖返回 404:服务器默认 registry 指向二进制文件镜像路径,不能用来解析 cors 等 npm 包。安装命令增加 --registry=https://registry.npmjs.org,只影响本次命令。

宝塔终端操作超时:先查看截图确认命令是否已输入或执行,避免重复部署。页面文字读取不到终端内容时,用真实终端截图核对结果。

HTTP 页面反复提示 PeerJS network 错误:旧客户端在标准端口留空时会采用 PeerJS 默认 443 端口。已修复为 HTTP 明确使用 80、HTTPS 使用 443,自定义端口保持原值。

网页打开但信令断开:核对代理的 UpgradeConnection 头,PeerJS 路径为 /peerjs/peerjs/。本项目使用单端口,不需要另开 9000。

跨网络视频无法连接:HTTPS 与信令正常不代表媒体链路一定可用。需要使用两台设备测试;严格 NAT 网络可能需要单独配置 TURN。

04 · 域名与 HTTPS(已完成)

  1. DNS A 记录:video → 43.160.236.132
  2. 宝塔「网站 → 反向代理」单独添加 video.shanbo-rig.com,代理地址为 http://127.0.0.1:3100,保留 WebSocket 升级头。
  3. 宝塔「SSL → 免费证书 → 申请证书」选择 Let's Encrypt、文件验证,并勾选视频域名。证书已签发且部署成功,当前证书到期日为 2026-12-14;面板自动续签开关已开启。
  4. 文件验证目录为 /www/wwwroot/video.shanbo-rig.com/.well-known/acme-challenge/。这不是应用代码目录;保留该目录和宝塔验证配置以支持续签。
  5. 在视频站点「设置 → SSL → 当前证书」开启强制 HTTPS。公网 HTTP 已验证返回 301 并跳转同域名 HTTPS。
  6. 客户端正式配置设置域名、端口 443secure: true;服务环境设置 PUBLIC_URL=https://video.shanbo-rig.com
  7. 检查配置后平滑重载 Nginx,只重启 webrtc-video。公网 HTTPS、Socket.IO WSS 聊天收发、PeerJS WSS 连接均通过验证。
nginx -t && nginx -s reload
systemctl restart webrtc-video
systemctl is-active webrtc-video
curl -I http://video.shanbo-rig.com/
curl -I https://video.shanbo-rig.com/

域名站点配置:/www/server/panel/vhost/nginx/video.shanbo-rig.com.conf。旧 webrtc-video.conf 仅保留 IP,不重复绑定正式域名。证书由宝塔管理,不要用其他配置模板覆盖现有站点。

接下来可用两台设备打开正式入口,允许各自浏览器的媒体权限,测试摄像头、麦克风与屏幕共享。严格 NAT 网络下可能仍需 TURN。

05 · 截图记录

服务器 14 项冒烟测试全部通过;公网首页、教程、PeerJS ID 接口返回 200,两个客户端的聊天消息收发及两条 WebSocket 信令检查通过。以下为实际部署截图,不包含密码或密钥。

服务器14项测试通过,视频服务已启动并开机自启
14 项测试通过,服务 active + enabled。首次健康检查发生在进程启动瞬间,重试后连接成功。
视频独立Nginx配置检查通过
独立 IP 入口配置检查通过,Nginx 平滑重载完成。
IP公网视频项目房间页面
早期 IP 页面房间交互验收;当时使用旁观模式。正式入口现已启用 HTTPS。
宝塔显示视频域名证书部署成功。
宝塔显示视频域名证书部署成功。
正式域名配置已生效,视频服务 active,Nginx 检查通过,证书有效期已核对。
正式域名配置已生效,视频服务 active,Nginx 检查通过,证书有效期已核对。
HTTPS 首页正常显示,PeerID 已取得,加密信令连接成功。
HTTPS 首页正常显示,PeerID 已取得,加密信令连接成功。
运行记录以实际检查结果为准;教程中的配置仅针对本视频项目。