跳转到正文

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_LANGenzh按系统语言检测
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

手动安装

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

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

  3. 生成两个不同密钥,填写 .env 中的 JWT_SECRETSESSION_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 设置 HTTP_PROXYHTTPS_PROXYNO_PROXY;示例已把变量传给后端。然后开启全局设置 > 下载器 > 代理 > 使用系统代理NO_PROXY 应包含 localhost,127.0.0.1,rust-srec

浏览器推送

生成 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 仅代表兼容处理器可用;还需在管道中选择 NVENC 处理器,并监控系统健康中的 GPU 组件。

清理存储

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

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

停止、更新与移除

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

# 再次启动
docker compose up -d

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

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

基于 MIT 许可证发布。