Rapidbay 1.0.0 配置参数详解

Rapidbay 1.0.0 全量配置参数:运行镜像 settings.py 实查基准、eval 注入语义、服务基础与搜索后端与 BT 引擎与字幕与转码与路径参数逐项解读、master 预发布 HLS 参数标注、生产模板与修改生效方式。

RapidbayRapidbayDocker流媒体2026/10/30

doc_id: 6343 slug: AH10kQnuPp0b description: Rapidbay 1.0.0 全量配置参数:运行镜像 settings.py 实查基准、eval 注入语义、服务基础与搜索后端与 BT 引擎与字幕与转码与路径参数逐项解读、master 预发布 HLS 参数标注、生产模板与修改生效方式。 title: Rapidbay 1.0.0 配置参数详解 status: DRAFT visibility: PRIVATE approval_status: PENDING source: mcp-create column: Rapidbay column_id: 1217 tags: [Rapidbay, Docker, 流媒体] tag_ids: [2387, 59, 1731] minio_key: docs/Rapidbay/Rapidbay 1.0.0 配置参数详解.md

Rapidbay 1.0.0 配置参数详解

目标:把 Rapidbay 1.0.0 的全部配置参数一次讲清——参数从哪看、怎么改、每个参数的类型/默认值/生效行为,并单独标注 master 分支已合入但当前 latest 镜像尚未识别的预发布参数。组件定位见《Rapidbay 介绍与选型指南》,部署与联动实操见《Rapidbay Docker Compose 部署指南》,接口行为见《Rapidbay 1.0.0 API 使用详解》。参数默认值全部取自实测运行镜像内的 /app/settings.py(2026-10-30 导出),master 预发布参数取自同日 master 分支源码实查。

一、环境信息

项目取值
实测日期2026-10-30
服务器Ubuntu 24.04.5 LTS x86_64
Rapidbay1.0.0(官方镜像 hauxir/rapidbay:latest,959 MB)
参数基准运行中服务内 /app/settings.py(95 行,与 master 分支 diff 仅为 8 个 HLS_* 预发布参数)
配置形态无配置文件,全部参数经环境变量注入(Docker Compose environment 段)
部署形态Docker Compose 双服务(Rapidbay + Jackett v0.24.2961),编排文件即配置档案

二、前置条件

  • 已按 B2 篇完成部署,能访问服务并看到 {"ok": true};
  • 知道自己所用镜像的构建时间——本文反复强调"参数以镜像内 /app/settings.py 为准"的原因:项目未启用版本发布,latest 镜像与 master 分支之间存在特性窗口期,参数清单会随镜像滚动变化;
  • 查看当前生效值的三种途径:
    1. 服务内参数文件:docker exec rapidbay-1.0.0-app cat /app/settings.py(2026-10-30 实测,路径 /app/settings.py);
    2. 服务进程环境:docker exec rapidbay-1.0.0-app env | grep -E "JACKETT|TORRENT|PASSWORD";
    3. 行为验证:多数参数可通过 API 行为反查(示例见第四章各参数的"验证"列)。

三、参数查看与修改方式

Rapidbay 的参数加载逻辑非常直接(/app/settings.py 实测源码摘录):

  1. 文件内为每个参数声明类型与默认值;
  2. 启动时遍历这些参数名,从环境变量读入;列表/字典/数字/布尔值按 Python 字面量 eval 解析——这意味着注入 "['en','de']" 会被解析为列表,注入 "True" 才是布尔真(大写首字母);
  3. 路径类参数(DATA_DIR 等 9 个)单独处理,空值时按 DATA_DIR 拼接默认子目录。

修改方式的唯一正解:改 Compose 编排文件的 environment 段后重建:

docker compose up -d --force-recreate rapidbay

回显(2026-10-30 实测):

[+] Running 2/2
 ✔ Container rapidbay-1.0.0-jackett  Running
 ✔ Container rapidbay-1.0.0-app      Recreated

注意:普通 docker compose restart 不会重读环境变量,参数变更必须 --force-recreate(B2 篇排障实录现象五同源)。

四、参数总览

以下为实测镜像 1.0.0 的全量参数(默认值即 /app/settings.py 内声明值;镜像另以 ENV DATA_DIR=/tmp 固定数据根目录,实测进程环境可见)。

4.1 服务基础

参数类型默认值说明
PASSWORDstr/NoneNone站点口令。未设置时登录端点直接 404(实测);设置后打开网页需先输入口令,API 侧凭 Cookie 会话访问
AUTO_PLAY_NEXT_FILEboolTrue前端播完当前文件自动连播下一文件
OPENAPI_HOSTstr/NoneNoneOpenAPI 文档中显示的服务地址(反代后文档调试用,不影响监听)

4.2 搜索后端

参数类型默认值说明
JACKETT_HOSTstr/NoneNoneJackett 地址(如 http://jackett:9117);与 Prowlarr 可同时配置,结果自动合并去重
JACKETT_API_KEYstr""Jackett API 密钥(仪表盘右上角或 ServerConfig.json 的 api_key)
PROWLARR_HOSTstr/NoneNoneProwlarr 地址,同上
PROWLARR_API_KEYstr""Prowlarr API 密钥

两组都未配置时服务日志出现 NO_SEARCH_BACKEND 提示,/api/search 返回空结果(实测行为见 D5 篇)。

4.3 BT 引擎

参数类型默认值说明
TORRENT_LISTENING_PORTint/NoneNone(镜像内 ENV 注入 6881)BT 数据端口;Compose 形态下必须与端口映射一致(tcp+udp 双映射)
DHT_ROUTERSlist[tuple]5 个公共 DHT 节点(router.utorrent.com:6881 等)DHT 引导节点表,一般无需改动
MAX_TORRENT_AGE_HOURSint10下载内容保留时长(小时),到期自动清理——无人值守防磁盘打满的核心参数
VIDEO_EXTENSIONSlist[str]['mp4','mkv','avi','mpg','mpeg']视频扩展名白名单(前端文件列表筛选)
SUPPORTED_EXTENSIONSlist[str]视频五种 + mp3/flac可触发下载的扩展名全集(实测:ISO 虽可下载,转码判定 supported:false)
TORRENT_DOWNLOAD_LIMITint-1全局下载限速(B/s),-1 不限
TORRENT_UPLOAD_LIMITint-1全局上传限速(B/s),-1 不限
EXCLUDE_TRACKERS_FROM_TRENDINGlist[str][]趋势列表排除的 tracker 域名
EXCLUDE_CATEGORIES_FROM_TRENDINGlist[int][]趋势列表排除的 Jackett 分类 ID
TRENDING_TITLE_BLOCKLISTlist[str][]趋势结果标题关键词黑名单
TRENDING_BLOCK_NON_LATIN_TITLESboolFalse屏蔽非拉丁字符标题(过滤水印组噪音常用)
MOVE_RESULTS_TO_BOTTOM_CONTAINING_STRINGSlist[str]['XviD']命中关键词的搜索结果沉底(老编码格式兼容性差)

4.4 字幕

参数类型默认值说明
SUBTITLE_LANGUAGESlist[str]['en']下载完成自动拉取的字幕语言,多语言写法 ['en','de','es'](官方 README 同款示例)
OPENSUBTITLES_USERNAMEstr/NoneNoneOpenSubtitles 账号(官方要求 VIP 才能拉字幕)
OPENSUBTITLES_PASSWORDstr/NoneNoneOpenSubtitles 密码

实测佐证:Sintel 下载完成后自动获得 9 条 .vtt 字幕并出现在文件状态里(未配账号时的行为为空列表)。

4.5 转码

参数类型默认值说明
CONVERT_VIDEOboolTrue下载完成后自动转码;改 False 则只下载(仅当播放端本地解码能力完整时)
VIDEO_CONVERSION_PARAMSstrlibx264 -preset ultrafastffmpeg 视频编码参数(编码器 + 预设),追求画质可换 -preset veryfast -crf 23,代价是 CPU 时长
AAC_BITRATEstr256k音频轨转 AAC 的码率
AAC_CHANNELSint2音频转码声道数
INCOMPLETE_POSTFIXstr.incomplete未完成文件的后缀标识
LOG_POSTFIXstr.log日志文件后缀
MAX_OUTPUT_FILE_AGEint10转码产物保留时长(小时),到期清理
MAX_PARALLEL_CONVERSIONSint2并发转码任务数;2C 服务器建议压到 1,防转码挤占下载带宽

4.6 路径与端口

参数类型默认值说明
DATA_DIRstr./data(镜像 ENV 固定为 /tmp)数据根目录,其余目录默认在其下派生
CACHE_DIRstr<DATA_DIR>/cache搜索缓存(diskcache)
LOGFILEstr<DATA_DIR>/rapidbay_errors.log运行日志(/error.log 端点读取的就是它)
DOWNLOAD_DIRstr<DATA_DIR>/downloads/原始下载目录
FILELIST_DIRstr<DATA_DIR>/filelists/文件清单目录
TORRENTS_DIRstr<DATA_DIR>/torrents/会话状态目录
OUTPUT_DIRstr<DATA_DIR>/output/转码产物目录(播放直供处,nginx 指向)
FRONTEND_DIRstr./app/frontend前端静态文件目录
KODI_ADDON_DIRstr./app/kodi.addonKodi 插件源码目录(/kodi.repo 打包源)

端口语义:HTTP 服务固定监听 5000(由启动脚本承载,nginx 同服务内反代),对外暴露端口号由 Compose 端口映射决定(本项目 8154);BT 数据端口即 TORRENT_LISTENING_PORT(本项目 6881)。

五、master 预发布参数(当前 latest 镜像不识别)

以下 8 个参数仅存在于 master 分支源码(2026-10-30 对 app/settings.py 实查),对应"HLS 边下边播"特性;实测镜像(同日拉取的 latest,内部 1.0.0)不含这批参数——注入不报错但完全无效(本项目编排文件残留的 HLS_STREAMING=True、HLS_SEGMENT_DURATION=6 即属此类,运行环境 env 与 settings.py 均无此变量,已在 B2 篇编排文件中移除):

参数master 默认值说明
HLS_STREAMINGFalseHLS 边下边播总开关(注意 master 上默认也是关,需显式开启)
HLS_SEGMENT_DURATION6HLS 分片时长(秒)
HLS_START_THRESHOLD52428800(50 MiB)启动 HLS 前需要的顺序数据量(字节)
MAX_PARALLEL_HLS_STREAMS2并发 HLS 转码上限(独立于 MAX_PARALLEL_CONVERSIONS)
HLS_STALL_TIMEOUT180无进度多少秒后回收 HLS 流
HLS_VIEWER_TIMEOUT300无客户端轮询多少秒后停掉 HLS 流
HLS_PREFETCH_BYTES33554432(32 MiB)码率未知时的预取窗口(字节)
HLS_READ_AHEAD_SECONDS60码率已知后保持超前预读的播放秒数

master 源码注释给出的机制:用 libtorrent 分片 deadline 抢出"连续头部",观看者停留在文件页时抢头部窗口,流式器按预取窗口滚动抢先;种子级顺序下载被刻意弃用(未观看的任务保持 rarest-first 选片)。选型含义:想要真·边下边播,要么等特性进入镜像,要么自建镜像(git clone 后按官方 Dockerfile 构建)。

六、生产配置模板

单机 2 核 / 4 GB / 50 GB VPS、以浏览器观影为主的最小化生产模板(Compose environment 段):

    environment:
      - PASSWORD=替换为不少于12位的强口令
      - TORRENT_LISTENING_PORT=6881
      - JACKETT_HOST=http://jackett:9117
      - JACKETT_API_KEY=从Jackett仪表盘复制
      - OPENSUBTITLES_USERNAME=你的VIP账号
      - OPENSUBTITLES_PASSWORD=对应密码
      - SUBTITLE_LANGUAGES="['en', 'zh']"
      - TORRENT_DOWNLOAD_LIMIT=8388608        # 限速 8 MB/s,保护上传带宽
      - TORRENT_UPLOAD_LIMIT=1048576          # 限速 1 MB/s,VPS 带宽友好
      - MAX_PARALLEL_CONVERSIONS=1            # 2 核压到 1,防转码卡顿
      - MAX_TORRENT_AGE_HOURS=6               # 磁盘紧张时缩短保留期
      - MAX_OUTPUT_FILE_AGE=6
      - TRENDING_BLOCK_NON_LATIN_TITLES=True  # 过滤非拉丁标题噪音
      - MOVE_RESULTS_TO_BOTTOM_CONTAINING_STRINGS="['XviD', 'CAM']"

要点:PASSWORD 上线必配(服务无账号体系,口令是唯一门槛);列表型变量保持 Python 字面量语法;限速值单位是 B/s(8388608 = 8 MB/s);改完 --force-recreate 重建。

七、常见问题

Q1:改了环境变量但行为没变? 普通 restart 不重读环境。执行 docker compose up -d --force-recreate rapidbay,再用 docker exec rapidbay-1.0.0-app env | grep 你的参数名 确认注入成功。

Q2:列表型参数注入后服务启动异常或行为怪异? 注入值会被 Python eval 解析,务必写合法字面量:列表 ['en','de'](注意单引号在 Compose 里需整体再包双引号)、布尔 True/False(小写 true 会被当字符串)、数字直接写。最稳妥的验证:docker exec rapidbay-1.0.0-app python3 -c "from app import settings; print(settings.SUBTITLE_LANGUAGES)"。

Q3:DATA_DIR 为什么是 /tmp?会不会丢数据? 这是镜像 Dockerfile 的固化选择(组件作者把"临时中转"作为默认定位)。数据是否丢失取决于你是否像 B2 篇那样把宿主目录挂载到 /tmp——挂了就是持久化的,没挂则重建即清空。想换根目录:注入 DATA_DIR=/data 并同步挂载,注意 nginx 对播放目录 /tmp/output 的指向也需一并调整,因此一般不建议动,保持默认挂载即可。

Q4:转码太慢或 CPU 打满? 调 VIDEO_CONVERSION_PARAMS(ultrafast 已是最快档)与 MAX_PARALLEL_CONVERSIONS(压到 1);仍不足可关转码(CONVERT_VIDEO=False)配合本地播放器直接播放原始文件。

Q5:磁盘仍被撑满? 确认两个保留时长参数(MAX_TORRENT_AGE_HOURS/MAX_OUTPUT_FILE_AGE);清理只对运行中的服务生效——服务停机期间落下的旧文件需手工清空 downloads/ 与 output/(先 docker compose down)。

Q6:设置了 HLS_STREAMING=True 却没有边下边播? 当前 latest 镜像不含该特性(见第五章),参数无效属预期;关注官方仓库 master 提交与镜像构建时间。

八、参考链接