生产部署
Rust-Srec 以自托管单节点服务运行。如果必须具备集群或故障转移能力,请先阅读能力边界。
参考拓扑
后端、数据库、配置和输出路径应位于同一受信任主机。除非 API 集成确有需要,否则只通过 TLS 反向代理发布前端。
部署基线
- 使用 Docker 部署,将两个镜像的
VERSION固定为v0.5.1。变更需审批的环境不要使用latest。 - 为
JWT_SECRET和SESSION_SECRET生成互不相同的唯一值,并限制.env文件权限。 - 把宿主机端口绑定到私网地址或回环地址。Compose 的回环映射格式为
127.0.0.1:15275:80和127.0.0.1:12555:8080。 - 在持续维护的反向代理终止 HTTPS,并转发
Host、X-Forwarded-For与X-Forwarded-Proto。只要反向代理发送X-Forwarded-Proto: https,会话 Cookie 就会自动带上Secure标记;如果代理无法发送该请求头,请显式设置COOKIE_SECURE=true。 - 将
DATA_DIR、CONFIG_DIR、OUTPUT_DIR和LOG_DIR放在持久化存储上;输出卷应与系统盘分开估算和监控。 - 按主机容量设置容器资源限制和应用并发限制。从保守值开始,按预计同时录制数和码率压测。
- 为录制失败、管道失败、凭据过期和输出根不可写配置通知。
- 添加生产频道前完成一次备份与恢复演练。
网络边界
前端通过私有 Compose 网络中的 BACKEND_URL=http://rust-srec:8080 访问 API。普通浏览器使用不要求把宿主机 API 端口暴露到互联网;该端口可仅供本机管理和集成。
必须直接访问 API 时,应通过 HTTPS 代理、限制来源网络并使用独立凭据。Swagger 会展示完整攻击面,默认不应公开。
容量与可靠性
- SQLite、输出文件和管道处理都受存储延迟影响。未验证锁、原子重命名和持续写入行为前,不要采用不可靠的网络文件系统。
- 录制峰值和转码峰值是不同工作负载,应分别限制下载、CPU 任务、IO 任务和上传并发数。
- Docker 重启策略只能恢复进程,不能提供主机级故障转移;主机本身也必须监控。
- 空闲空间要覆盖活跃录制、管道临时文件和回滚快照。参见存储与容量。
上线检查清单
- 已修改默认密码并禁用不用的账号。
- 已替换并保护密钥,日志和工单中没有敏感值。
- 已从用户访问地址验证 TLS 和安全 Cookie。
- 没有在非必要情况下公开后端和 Swagger。
- 已验证持久化卷所有权和磁盘空间告警。
- 已监控存活检查和带认证的就绪检查。
- 已完成恢复演练和回滚流程。
- 已审批平台录制授权、保留周期和隐私要求。