跳转到正文

Docker 部署 ​

标准部署在一台 Docker 主机上运行后端和前端,并通过绑定挂载持久化数据。

前置要求 ​

安装脚本 ​

Linux 与 macOS:

bash
curl -fsSL https://docs.srec.rs/install.sh | SREC_LANG=zh bash

Windows PowerShell:

powershell
$env:SREC_LANG = "zh"; irm https://docs.srec.rs/install.ps1 | iex

安装脚本会下载 Compose 和环境文件、生成唯一密钥、检测可选的 NVIDIA 支持,并询问是否启动服务。两个入口都会按 SREC_LANG 或系统语言选择对应语言的安装脚本;上面的命令显式指定了 zh,因此系统语言不是中文时也会使用中文安装脚本。

审查远程脚本

把远程响应直接传给 Shell 会执行网络上当时返回的内容。有变更控制要求的环境应先下载脚本、审查内容和校验值,再运行已审核的本地副本,或采用下面的手动安装。

安装参数:

变量用途默认值
SREC_LANGen 或 zh按系统语言检测
RUST_SREC_DIR安装目录./rust-srec
VERSION镜像标签latest

使用已审查发布版时应设置准确版本。Linux/macOS 示例:

bash
curl -fsSL https://docs.srec.rs/install.sh | SREC_LANG=zh RUST_SREC_DIR=/opt/rust-srec VERSION=v0.5.1 bash

与 systemd 服务的路径冲突

systemd 服务会把后端二进制安装到 /opt/rust-srec/rust-srec。两种部署共用一台主机时,请改用其他 RUST_SREC_DIR。

手动安装 ​

  1. 创建目录并下载两个文件:

  2. 分别重命名为 docker-compose.yml 和 .env。

  3. 生成两个不同密钥,填写 .env 中的 JWT_SECRET 和 SESSION_SECRET。空值会让 Compose 有意拒绝启动。

  4. 审查目录、时区、端口和 VERSION。

  5. 启动并验证:

bash
docker compose up -d
docker compose ps
curl http://localhost:12555/api/health/live

可用 openssl rand -hex 32 生成密钥;没有 openssl 时可用 python3 -c 'import secrets; print(secrets.token_hex(32))'。PowerShell 命令:

powershell
$bytes = New-Object Byte[] 32
[Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
-join ($bytes | ForEach-Object { "{0:x2}" -f $_ })

默认布局 ​

宿主机容器用途
./data/app/dataSQLite 与应用数据
./config/app/config平台配置
./output/app/output录制和管道输出
./logs/app/logs应用日志
12555后端 8080API 与 Swagger
15275前端 80Web 界面

长期部署应使用绝对宿主机路径。示例已经配置 unless-stopped、后端健康检查、前端启动顺序和容器日志轮转。

访问与首次登录 ​

  • Web 界面:http://localhost:15275
  • Swagger UI:http://localhost:12555/api/docs
  • 初始账号:admin / admin123!

首次登录必须修改密码,然后继续完成第一次录制。

可选配置 ​

代理 ​

让平台流量经过代理有两种方式:

  • 已保存的代理: 在 设置 → 代理 中添加,然后在 设置 → 全局 → 网络与系统 中将其选为 默认代理,或在需要它的平台、模板、主播或账号上选择。无需修改 .env,因此通知和上传仍按原来的方式连接。不同的平台和账号可以使用不同的代理。
  • 系统代理: 在 .env 设置 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY;示例已把变量传给后端。NO_PROXY 应包含 localhost,127.0.0.1,rust-srec。重新创建后端容器使其读取这些变量,然后在需要的地方选择 系统代理。无论代理设置如何,这些变量都会作用于通知和上传工具。

直连 会忽略这些环境变量,FFmpeg 和 Streamlink 也不例外。详见代理。

浏览器推送 ​

生成 VAPID 密钥、写入 .env 并重启后端。localhost 以外使用 Web Push 必须有 HTTPS。参见通知系统。

NVIDIA GPU ​

安装宿主机驱动和 NVIDIA Container Toolkit,下载 docker-compose.gpu.yml,然后执行:

bash
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d
docker exec rust-srec nvidia-smi

该覆盖文件请求 gpu、compute、video 和 utility 四项能力。其中 utility 提供 nvidia-smi,系统健康页面依赖它显示 GPU。自行编写覆盖文件时请保留全部四项。Docker 29.1 及更高版本可改用工具包生成的设备规范(CDI),此时容器获得的内容由该规范决定,此列表将被忽略。

容器能访问 GPU 仅代表兼容处理器可用;还需在管道中选择 NVENC 处理器,并监控系统健康中的 GPU 组件。

清理存储 ​

应删除挂载输出目录内部的文件;容器运行期间不要重命名、替换或移动作为绑定挂载源的宿主机目录。把根目录移动到回收站的文件管理器也可能让现有容器继续引用已孤立目录。

系统健康显示输出根 not_found 时,确认宿主机目录后重启容器以重建挂载命名空间。显示 storage_full 时,只释放空间而不要替换目录;写入门可在后续探测恢复。参见存储与容量和常见问题。

停止、更新与移除 ​

bash
# 停止并保留数据
docker compose stop

# 再次启动
docker compose up -d

修改 VERSION 前先阅读升级与回滚。docker compose down 会移除容器和网络,但保留绑定挂载的宿主机数据;删除任何宿主机目录前必须核对准确路径。

面向互联网的主机应完成生产部署,不要直接公开示例端口。

基于 MIT 许可证发布。