StreamCall 部署

StreamCall Linux 服务端 1.2.3 安装与首次呼叫指南

从离线包校验、Linux 宿主预检、Docker Compose 安装、端口配置,到官方终端首次呼叫和录像回放验证的完整 StreamCall 服务端 1.2.3 部署指南。

先确认下载的是什么

StreamCall Linux 服务端 1.2.3 只提供一种公开交付形式:StreamCall-Server-1.2.3-Linux-x86_64.tar.gz。它既是压缩包,也是完整的离线 Docker Compose 部署包,不存在另一个内容不同的“Docker 版”。

服务端安装包通过 GitHub Release 提供。若下载暂时失败,请稍后重试;仍无法获取时,可通过联系我们说明所需版本和部署环境。

离线包包含五个固定容器镜像、六个 Compose 服务、配置模板、镜像与文件校验信息、宿主环境预检和 StreamCall 控制脚本。安装过程不需要访问 Docker Hub 或其他镜像仓库,FFmpeg 和 ffprobe 已安装在 StreamCall 服务端镜像内,宿主无需另行安装。

1. 准备 Linux x86_64 宿主

服务端当前不支持 Windows 部署。Windows 是官方现场终端平台,不是 1.2.3 服务端平台。

主机需要满足以下运行环境要求:

  • Linux x86_64,内核 4.18 或更高版本。
  • rootful Docker Engine 20.10 或更高版本。
  • Docker Compose v2 2.24 或更高版本。
  • Docker 存储使用 overlayfs containerd snapshotter、overlay2、btrfs 或 zfs。
  • 8 个逻辑 CPU、至少 7.5 GiB 可见内存和 12 GiB 可用磁盘。
  • 安装账号具备 sudo 权限。

Ubuntu 22.04 x86_64 是完整栈验收基线。其他常见发行版只有在满足相同的内核、Docker、Compose、存储驱动和资源要求后才应部署,并需要在目标环境完成实际验收。

2. 下载并核对 SHA-256

1.2.3 服务端文件大小为 1,626,905,079 字节,SHA-256 为:

686354884e9d82c570bfaf32410383994bfb32e06b41c409a9d798d4dbf19947

在 Linux 上校验:

sha256sum StreamCall-Server-1.2.3-Linux-x86_64.tar.gz

如果先下载到 Windows,可用 PowerShell 校验:

Get-FileHash -Algorithm SHA256 ./StreamCall-Server-1.2.3-Linux-x86_64.tar.gz

输出必须与官网公布值逐字符一致。大小或哈希不一致时不要继续安装,应删除文件后从官方 Release 重新下载。

3. 解压并执行包内校验

在有足够空间的本地磁盘目录解压,不要在 FAT 文件系统、只读目录或网络映射目录上直接安装:

mkdir -p streamcall-1.2.3
tar -xzf StreamCall-Server-1.2.3-Linux-x86_64.tar.gz -C streamcall-1.2.3
cd streamcall-1.2.3/StreamCall-Server-1.2.3-Linux-x86_64
sha256sum -c SHA256SUMS.txt

最后一条命令会核对包内文件。正式安装工具还会再次核对离线镜像归档和每个加载后的镜像 ID;校验不通过时会停止,不会启动部分服务。

4. 运行宿主环境预检

先执行:

sudo bash streamcallctl.sh preflight

预检会检查操作系统架构、内核、Docker 与 Compose 版本、rootful 模式、存储驱动、CPU、内存、磁盘、端口占用和包完整性。预检失败时,应按输出修复宿主条件后重新运行,不要绕过检查,也不要直接执行 docker compose up。

直接运行 Compose 会跳过包身份、配置、权限、持久卷和就绪状态检查,可能得到“容器已启动但系统不可用”的不完整状态。1.2.3 的正式入口始终是包内控制脚本。

5. 使用真实局域网地址安装

选择终端能够访问的服务端真实 IPv4 地址。不要填写 127.0.0.1、0.0.0.0、Docker 网桥地址或临时 DHCP 地址。假设服务端固定地址是 192.168.10.20:

sudo bash streamcallctl.sh install --node-ip 192.168.10.20

安装工具会导入固定镜像、生成部署配置、创建持久卷、设置最小文件权限、启动六个服务并等待控制服务、网关、媒体服务和录像工作进程就绪。完成后执行:

sudo /opt/streamcall-stack/current/streamcallctl.sh status

status 成功后,按安装输出的公开 HTTPS 地址访问调度中心。即使在局域网内,浏览器摄像头和麦克风也需要可信 HTTPS。1.2.3 的 setup/install 会把浏览器页面与 WSS 信令配置在同一公开源下;18090 和 7880 是受保护的内部端口,不应作为客户访问地址或直接暴露。

交互式 setup 可选择已有受信证书、部署专用私有 CA,或同机外部 HTTPS 代理;非交互 install --node-ip 默认生成部署专用私有 CA。生成证书不等于客户端已经信任该 CA,管理员仍须通过可信渠道分发根证书并核对指纹。由旧 HTTP 版本升级的部署会保留原地址,须显式运行 configure-network 迁移到可信 HTTPS。

使用域名时,证书须包含该域名;使用固定 IP 时,证书须在 SAN 中包含该 IP。内网可使用企业 CA,但其根证书必须预先安装到每台访问设备的信任库。仅生成自签名证书、点击浏览器忽略警告或关闭证书校验,不能替代可信证书部署。地址变更时同步检查证书、DNS、反向代理及媒体地址,并按包内运维说明应用配置。

例如,完成域名与证书配置后,使用 https://dispatch.example.com/ 打开调度中心。确认浏览器无证书警告,摄像头和麦克风权限可申请,再连接现场终端。不要把所有运行端口直接暴露到公网。

6. 配置防火墙与网络路径

同一局域网部署至少要保证终端能够到达 Web/业务入口和实时媒体端口:

端口协议用途建议边界
443(或自定 TLS 端口)TCPHTTPS Web 入口与 WSS 媒体信令对授权客户端开放,需配置反向代理
18090TCP默认 HTTP Web 网关仅供受控检查及反向代理上游使用
7880 / 7881TCP实时音视频信令与 RTC TCP 路径对需要通话的终端开放
7882UDP实时音视频 RTC UDP 媒体对需要通话的终端开放
18091TCPStreamCall 控制服务内部端口保持本机回环访问
6379TCP内部协调服务保持本机回环访问
7988TCP录像工作进程健康检查保持本机回环访问

跨网段、VPN、NAT 或多网卡部署时,node-ip 必须是终端实际可达的地址。页面能打开但通话无画面或无声音,通常应优先检查 7881 TCP、7882 UDP、路由和 NAT,而不是重复安装服务端。

7. 连接 Web 调度中心和官方终端

浏览器访问已经配置可信证书的 HTTPS 地址,确认调度中心能够加载并显示系统就绪状态。Web/PWA 现场终端由同一服务端的 /client/ 提供,不需要单独下载安装包。随后安装所需的官方终端:Windows 使用 EXE 安装包或 ZIP,Linux 使用 TGZ 并按包内说明启动,Android 使用同时包含 arm64-v8a 与 armeabi-v7a 的 ARM APK。macOS、iOS 与 Linux aarch64 暂不提供当前版本。

在终端中填写同一个服务端地址,并按部署配置分配站点、终端标识和显示名称。

1.2.3 首次管理员与终端登记

全新安装在本机生成一次性首次管理员令牌。管理员通过 streamcallctl.sh bootstrap-token 在服务器本地读取令牌,在调度中心选择语言并创建首个管理员;令牌不得发送给支持人员。新安装不预置示例站点、终端或摄像头,完成真实站点设置后,再到身份与访问页面审批终端登记。

读取调度中心令牌:

sudo awk -F= '$1 == "STREAMCALL_API_TOKENS" {print substr($0,index($0,"=")+1)}' /etc/streamcall-stack/streamcall.env | tr ',' '\n' | awk -F: '$1 == "dispatcher" {print substr($0,index($0,":")+1)}'

读取现场终端令牌:

sudo awk -F= '$1 == "STREAMCALL_API_TOKENS" {print substr($0,index($0,"=")+1)}' /etc/streamcall-stack/streamcall.env | tr ',' '\n' | awk -F: '$1 == "endpoint" {print substr($0,index($0,":")+1)}'

在 Web 调度中心进入“设置 > 通用”,把 dispatcher 值填入“API 令牌”并保存;在各官方现场终端的“服务连接”设置中,把 endpoint 值填入“API 令牌”后重新连接。如需读取 admin 令牌,可将上面命令末尾的 dispatcher 改为 admin,但只应在受控的管理员工作站使用。

令牌等同于访问凭据,不要写入截图、工单、聊天记录或公开日志。需要轮换时,应修改服务端配置并按运维流程重启服务,随后同步更新对应客户端。

所有安装包都应通过官网下载,并核对下载页公布的 SHA-256。SDK ZIP/AAR 是集成组件,不是可直接安装的终端应用。

8. 完成首次呼叫与录像验收

首次部署不要只以“页面可以打开”作为验收。建议完成下面的最小闭环:

  1. 调度中心显示服务端、媒体服务和录像能力就绪。
  2. 一个官方现场终端注册到预定站点,并显示可呼叫状态。
  3. 现场终端发起呼叫,调度中心队列出现正确的站点、终端和时间信息。
  4. 调度员接听,双方验证实时视频、双向音频和结束呼叫。
  5. 如已配置关联摄像头,确认调度员能看到正确现场画面。
  6. 在通话中开始并停止录像,随后进入录像列表,确认文件可播放、时长正确并能定位到对应呼叫。
  7. 在维护窗口重启 Linux 主机或按部署运维流程完整重启服务栈;服务恢复后重新运行 status,再连接终端并查询刚才的呼叫与录像,确认服务端状态已持久化。

免费版适合一个小型站点,包含总计 4 个终端名额,其中最多 1 个调度席,支持 2 个关联摄像头和 1 路并发呼叫。正式部署前,应先在真实摄像头、真实网络和目标终端上完成上述闭环。

9. 理解免费版与授权边界

服务端未导入签名授权时自动按免费版运行,不需要申请“Free License”。正式项目可选择生产部署授权、业务集成授权或调度集成授权,具体权益以签发文件为准。

Endpoint SDK 集成是独立授权权益,需要登记客户应用与终端安装身份。业务 API、调度 API 与 Endpoint SDK 集成分别授权;申请前可查看 Endpoint SDK 授权范围。

在调度中心进入“授权与版本”即可复制或下载完整授权请求 JSON;无浏览器环境可运行:

sudo /opt/streamcall-stack/current/streamcallctl.sh license-request

提交授权请求并取得签名授权文件后,按服务端管理员手册导入并核对生效权益。授权请求、签发文件和管理员令牌都应按项目凭据管理,不要写入公开工单或截图。

安装容器包不等于自动获得生产授权。评估或正式项目按实际部署确认授权范围;OEM 和再分发权另行确认。

10. 从原生 1.1.0 迁移

已有原生或 systemd 方式的 1.1.0 部署时,不要执行 clean install。先完成备份,再在解压后的 1.2.3 包目录运行:

sudo bash streamcallctl.sh migrate-1.1.0 --node-ip 192.168.10.20

迁移会先校验包、宿主和镜像,再停止旧服务,保留 /opt/streamcall、/etc/streamcall 和 /var/lib/streamcall,创建迁移前归档,并把 SQLite 状态和录像复制到新持久卷。复制或就绪检查失败时,工具会尝试恢复原 1.1.0 服务。迁移完成后仍要执行 status、首次呼叫和录像读回验证。

11. 备份、恢复、升级与卸载

安装后统一使用当前版本控制工具:

sudo /opt/streamcall-stack/current/streamcallctl.sh backup
sudo /opt/streamcall-stack/current/streamcallctl.sh restore /var/backups/streamcall/streamcall-manual-YYYYMMDDTHHMMSSNNNNNNNNNZ.tar.gz
sudo /opt/streamcall-stack/current/streamcallctl.sh rollback
sudo /opt/streamcall-stack/current/streamcallctl.sh uninstall

备份包含配置、SQLite 状态、录像和日志,并带相邻 SHA-256 校验文件。restore 会拒绝绝对路径、路径穿越、链接、缺失 manifest 或哈希不一致的归档。默认卸载会保留配置与持久卷;只有明确确认不再需要数据时才使用 --purge-data,清理镜像还需单独指定 --purge-images。

后续容器版本升级应使用新版本包内控制脚本的 upgrade 命令,由工具完成事务式切换;不要覆盖 current 目录,也不要手工替换正在运行的镜像。

12. 常见问题定位顺序

预检提示 Docker 不合格: 确认使用 rootful Docker Engine 和 Compose v2,而不是 rootless Docker、Podman 兼容层或过旧的 docker-compose 二进制。

18090 页面打不开: 先运行 status,再检查宿主防火墙、node-ip 是否为固定可达地址,以及 18090 是否被其他程序占用。

页面可开但没有音视频: 先检查是否使用可信 HTTPS、摄像头与麦克风权限是否允许,以及媒体信令是否为 WSS。然后检查终端到媒体服务的 TCP/UDP 路径、VPN/NAT 规则、多网卡路由及服务端地址。

录像没有生成: 先确认通话本身正常,再检查 status、磁盘空间和录像工作进程就绪状态。不要在宿主另装 FFmpeg 试图覆盖镜像内工具。

文件或镜像校验失败: 停止安装并重新下载。不要编辑 SHA256SUMS.txt、images.env 或离线镜像归档来绕过校验。

完成宿主预检、status、首次呼叫、录像播放和重启后读回这五项后,才应把节点视为可交付的 StreamCall 服务端 1.2.3 部署。

这篇内容是否有帮助?反馈仅用于改进文章内容。