pyLoad 配置参数详解
pyLoad(pyload-ng)配置参数详解:pyload.cfg 核心配置 7 节逐参数实测读回(download/general/log/permission/proxy/reconnect/webui)、339 节插件配置结构、PUID/PGID/TZ 实测效果、三种修改途径生效规则与排障实录。
pyLoad 配置参数详解
目标:把 pyLoad(pyload-ng)的全部配置体系讲透:两个配置文件(
pyload.cfg核心配置与plugins.cfg插件配置)的存放位置、逐节参数含义、默认值与实测值对照,容器环境变量(PUID/PGID/TZ)的实测效果,以及三种修改途径(WebUI / REST API / 直接改文件)的行为差异与生效规则。全部参数表基于 2026-10-28 在真实容器上的逐节读回(非转抄文档),部署过程见本专栏《pyLoad Docker Compose 部署实战》。
一、环境信息
| 项目 | 实测值 |
|---|---|
| pyLoad 版本 | pyload-ng 0.5.0b3.dev101(pyload --version 显示 pyLoad 0.5.0) |
| 运行形态 | 容器(linuxserver/pyload-ng,s6 托管),配置目录 bind mount 到宿主 /config |
| 配置文件 | /config/settings/pyload.cfg(核心)、/config/settings/plugins.cfg(插件)、/config/settings/accounts.cfg(账户) |
| 数据库 | /config/data/pyload.db(SQLite:packages/links/storage/users/apikeys 等表) |
| 实测容器内身份 | uid=1000(由 PUID=1000 指定),配置文件属主实测 1000:1000 |
| 实测时区 | TZ=Asia/Shanghai 生效(容器内 date 回显 CST 12:48) |
| 核心配置节数 | 7 节(download / general / log / permission / proxy / reconnect / webui) |
| 插件配置节数 | 339 节(hoster / decrypter / addon / extractor / account 全量插件逐节生成) |
| 读回方式 | 直接读文件 + REST API get_config_value 交叉验证 |
二、配置体系总览
pyLoad 的配置分散在四类载体上,各管一摊,先建立全局地图:
| 载体 | 路径(容器内) | 内容 | 谁来写 |
|---|---|---|---|
pyload.cfg | /config/settings/pyload.cfg | 核心配置 7 节(下载/日志/权限/代理/重连/WebUI 等) | WebUI 设置页、REST API、手动编辑 |
plugins.cfg | /config/settings/plugins.cfg | 339 个插件的逐节配置(每个 hoster/decrypter/addon/extractor 一节) | 同上;插件管理器首次启动自动生成 |
accounts.cfg | /config/settings/accounts.cfg | 高级账户凭据(按插件名分节) | WebUI 账户页、API add_account |
pyload.db | /config/data/pyload.db | 队列/链接/用户/API key/插件运行状态等动态数据 | 核心(运行时) |
两个关键实测结论,决定你的修改姿势:
pyload.cfg/plugins.cfg是"声明式快照":文件里每行都带类型与描述(int max_downloads : "Maximum parallel downloads" = 3),由核心在启动时解析、修改时整体重写。直接手改文件必须停服进行,否则运行中的核心随时会用内存值重写文件、覆盖你的修改(本次实测中两次 restart 均观察到 cfg 被重写);- WebUI 与 REST API 改配置是"即时生效 + 立即落盘":实测
set_config_value修改download.max_speed后立刻读回文件已变为新值,无需重启。
💡 配置文件采用 pyLoad 自定义 INI 变体:节头是
Name - "Public Name":(没有方括号),键行格式类型 键名 : "描述" = 默认值,节与节之间空行分隔。手工编辑时保持原格式,不要加[ ]。
三、pyload.cfg 核心配置逐节详解
以下为 /config/settings/pyload.cfg 全量 7 节的逐节读回(2026-10-28 实测,默认值列即实测首启值;首启值为 trace 调试线等少数项与官方 pip 安装默认略有差异,以实测为准)。
3.1 general —— 全局行为
| 参数(类型) | 默认/实测值 | 说明 |
|---|---|---|
debug_level(枚举 debug;trace;stack) | trace | 日志详细级别;debug < trace < stack。实测容器内为 trace(社区镜像默认开调试),生产建议 debug |
debug_mode(bool) | True | 调试模式总开关。实测 True;生产环境建议关闭以减噪 |
folder_per_package(bool) | True | 每个包在下载目录下建独立子目录(实测 extract-final 包即生成了同名子目录) |
language(枚举 en;…) | en | 界面语言(WebUI 主题内切换) |
min_free_space(int,MiB) | 1024 | 剩余空间低于该值暂停下载,防写满磁盘 |
ssl_verify(枚举 off;on;on (using aia-chaser)) | True | HTTPS 证书校验策略 |
storage_folder(folder) | /downloads | 下载根目录。容器形态由启动参数 --storagedir /downloads 指向挂载目录;裸机默认 ~/Downloads/pyLoad |
3.2 download —— 下载行为
| 参数(类型) | 默认/实测值 | 说明 |
|---|---|---|
chunks(int) | 3 | 单文件最大连接分块数。与 aria2 的 -s 同义;实测对公网直链生效 |
max_downloads(int) | 3 | 并行下载任务上限(get_config_value 实测读回 3) |
max_speed(int,KiB/s) | -1(不限) | 总速度上限;实测 API 置 512 后文件立即回写为 512 |
limit_speed(bool) | False | 限速开关(与 max_speed 配合) |
interface(ip) | 空 | 下载绑定的网卡/IP(多网卡服务器选路用) |
ipv6(bool) | False | 允许 IPv6 下载 |
skip_existing(bool) | False | 目标文件已存在时跳过 |
start_time / end_time(time) | 0:00 | 下载时段窗口(配合定时任务做错峰;0:00 = 不限制) |
3.3 log —— 日志
| 参数(类型) | 默认/实测值 | 说明 |
|---|---|---|
console(bool) | True | 日志输出到控制台(容器下即 docker logs 的内容来源) |
console_color(bool) | False | 控制台着色 |
filelog(bool) | True | 落盘日志文件 |
filelog_folder(folder) | 空(默认 <userdir>/log) | 日志目录;容器内即 /config/log/ |
filelog_rotate(bool) | True | 日志轮转 |
filelog_size(int,KiB) | 5120 | 单文件上限(5 MiB) |
filelog_entries(int) | 10 | 保留日志文件个数 |
syslog / syslog_location / syslog_host / syslog_port | False / local / localhost / 514 | 输出到本机或远程 syslog(集中式日志用) |
3.4 permission —— 权限(容器场景重点)
| 参数(类型) | 默认/实测值 | 说明 |
|---|---|---|
change_user / change_group(bool) | False | 下载完成后 chown 文件属主/属组 |
user / group(str) | abc | chown 目标用户/组名(社区镜像的 s6 运行账号默认名) |
change_file / change_folder(bool) | False | 是否强制 chmod |
file / folder(str) | 0644 / 0755 | chmod 目标权限 |
change_dl(bool) | False | 上述权限规则是否作用于下载产物 |
实测提醒:容器以 PUID/PGID=1000 运行时,下载产物天然属主 1000,与宿主普通用户一致,无需开启 change_dl;只有当下载目录被多个不同 uid 的服务共享读写时才需要动这一节。
3.5 proxy —— 出站代理
| 参数(类型) | 默认/实测值 | 说明 |
|---|---|---|
enabled(bool) | False | 代理总开关 |
type(枚举 http;https;socks4;socks5) | http | 代理协议 |
host / port(ip / int) | localhost / 7070 | 代理地址端口 |
username / password(str/password) | 空 | 认证凭据(写入 cfg 时为明文,注意文件权限) |
socks_resolve_dns(bool) | False | DNS 解析是否走代理(抗 DNS 污染场景开) |
实测提示:pyLoad 的插件下载全部走此代理;国内服务器拉取境外网盘/直链卡顿时,把 enabled=True 指向本机代理是第一优先排查手段。
3.6 reconnect —— 路由器重连
| 参数(类型) | 默认/实测值 | 说明 |
|---|---|---|
enabled(bool) | False | 重连总开关(用于一键网盘等按 IP 限频的场景,触发路由器换 IP) |
script(str) | 空 | 重连脚本路径 |
start_time / end_time(time) | 0:00 | 重连允许时段 |
3.7 webui —— Web 界面
| 参数(类型) | 默认/实测值 | 说明 |
|---|---|---|
enabled(bool) | True | WebUI 总开关(纯 CLI/headless 可关) |
host(ip) | 0.0.0.0 | 监听地址;容器内必须保持 0.0.0.0,改成 127.0.0.1 会导致端口映射后无法访问 |
port(int) | 8000 | 监听端口(get_config_value 实测读回 8000) |
use_ssl(bool) | False | HTTPS;证书路径默认 /config/data/ssl.crt、/config/data/ssl.key |
ssl_certfile / ssl_keyfile / ssl_certchain(file) | 见左 | 证书文件位置(挂自有证书改这里) |
theme(枚举 modern;pyplex) | pyplex | 界面主题 |
autologin(bool) | False | 单用户时跳过登录页 |
session_lifetime(int,分钟) | 44640(31 天) | 会话有效期 |
prefix(str) | 空 | 路径前缀(反代子路径场景,如 https://host/pyload/ 填 /pyload) |
develop(bool) | False | 开发模式(热重载前端资源) |
四、容器环境变量(PUID / PGID / TZ)
官方 Dockerfile(lsiobase 系)通过 s6 的 init 容器阶段消费这三个变量,实测效果:
| 变量 | 实测值 | 生效证据(2026-10-28 实测) |
|---|---|---|
PUID | 1000 | 容器内 id 回显 uid=1000;/config/settings/pyload.cfg 属主 1000:1000;下载产物属主 1000 |
PGID | 1000 | 同上,gid=1000 |
TZ | Asia/Shanghai | 容器内 date 回显 CST 12:48(东八区);日志时间戳同步为本地时区 |
三条实测经验:
- PUID/PGID 必须与宿主上你对
/config、/downloads两个目录有读写权的 uid/gid 一致,否则首启即报权限错误(现象:日志反复Permission denied或 WebUI 502); - 改 PUID/PGID 后需重建容器(
docker compose up -d)才重新映射身份;已有配置文件属主不会自动 chown,必要时手动chown -R; TZ只影响日志展示与时段类配置(start_time/end_time)的语义,务必与服务器实际所在时区一致,否则"错峰下载"窗口会整体偏移。
五、plugins.cfg 插件配置(339 节)结构与代表性节
plugins.cfg 由插件管理器在首次启动时按插件源码内的 __config__ 声明自动生成,2026-10-28 实测共 339 节。结构规律(以实测节为例):
hoster 节(站点下载插件,如 YoutubeCom)—— capability 开关为主:
YoutubeCom - "YoutubeCom":
bool .3gp : "Allow .3gp" = False
bool .flv : "Allow .flv" = True
bool .mp4 : "Allow .mp4" = True
...
addon 节(自动化插件,如 ExternalScripts)—— 核心是 enabled:
ExternalScripts - "ExternalScripts":
bool enabled : "Activated" = True
bool unlock : "Execute script concurrently" = False
extractor 适配器节(如 UnRar)—— 后端行为参数:
UnRar - "UnRar":
bool ignore_file_attributes : "Ignore File Attributes" = False
bool ignore_warnings : "Ignore unrar warnings" = False
通用节骨架(绝大多数 hoster/account 插件共有,与 pyLoad 对接站点的方式强相关):
ExtmatrixCom - "ExtmatrixCom":
bool chk_filesize : "Check file size" = True
bool enabled : "Activated" = True
bool fallback : "Fallback to free download if premium fails" = False
int max_wait : "Reconnect if waiting time is greater than minutes" = 10
bool use_premium : "Use premium account if available" = True
四个高频实操点(全部实测验证):
- 解包全链路的开关组合:
ExtractArchive(addon 总开关,默认关)+UnZip/UnRar/SevenZip/UnTar(适配器,默认关)必须同时置enabled = True才会自动解包——这是新装 pyLoad 最常见的"为什么不解压"根因; - 改 enabled 的正规姿势是 API/WebUI:
set_config_value(section 传plugin)写入即持久化,实测回显null且文件即时更新;直接手改文件则必须停服; - 插件配置会随插件更新而演进:插件管理器启动时按插件源码重新生成缺省节(
bool enabled : "Activated", False是 addon 类的兜底),旧节不会被删除,升级后新参数以默认值出现; - 一节一插件、节名即插件名:
service_call、账号绑定、日志标签里的插件名与节名严格一致(如ExtractArchive、UnZip),排障时可以按名对齐。
六、accounts.cfg 账户配置
首启时按全部账户类插件生成空节骨架(实测节选):
version: 1
AccioDebridCom:
AlldebridCom:
ArchiveOrg:
绑定真实账户后,对应节内写入凭据(WebUI → Accounts 页或 POST /api/add_account)。实测注意:凭据为明文落盘,accounts.cfg 权限为 0600(实测 -rw-------),备份该文件时一并注意保管;主机被入侵等同于全部高级账户泄露。
七、修改途径对比与生效规则(实测结论)
| 途径 | 操作 | 生效时机 | 实测要点 |
|---|---|---|---|
| WebUI | Settings → Core/Plugins 表单 | 立即 | 适合人工调整;表单项与 cfg 键一一对应 |
| REST API | POST /api/set_config_value | 立即 | 实测 {"category":"download","option":"max_speed","value":512,"section":"core"} 回显 null,文件即时变 512;读回用 GET /api/get_config_value?category=…&option=…§ion=… |
| 手改文件 | 编辑 pyload.cfg / plugins.cfg | 重启后 | 必须先 docker compose stop(或确保核心停止),改完再启动;运行中手改会被内存态覆盖 |
API 读写的完整实测回路(2026-10-28 真实回显):
# 读 webui 端口
curl -s -H "X-API-Key: $KEY" 'http://127.0.0.1:8133/api/get_config_value?category=webui&option=port§ion=core'
# 实测回显:8000
# 读并行下载数
curl -s -H "X-API-Key: $KEY" 'http://127.0.0.1:8133/api/get_config_value?category=download&option=max_downloads§ion=core'
# 实测回显:3
# 改总限速为 512 KiB/s
curl -s -H "X-API-Key: $KEY" -X POST http://127.0.0.1:8133/api/set_config_value \
-H 'Content-Type: application/json' \
-d '{"category":"download","option":"max_speed","value":512,"section":"core"}'
# 实测回显:null (cfg 文件同步落盘)
八、排障实录
- 改了 pyload.cfg 不生效:运行中手改被覆盖(本文第二节机制)。实测中两次 restart 均观察到 cfg 被核心重写。正确姿势:API 修改或停服手改。
PUID改了但配置文件属主没变:s6 只在新文件创建时应用 uid;存量文件需手动chown -R 1000:1000 /config /downloads后重启。- 时区不对导致下载时段错位:
TZ未设置时容器回退 UTC,start_time/end_time窗口整体偏移 8 小时(东八区);实测设置TZ=Asia/Shanghai后date即回显 CST。 - 解包不触发:优先检查
ExtractArchive与对应适配器两层的enabled(第五节第 1 点);若曾用错误参数手动触发过解包,还需清理pyload.db中storage表的残留队列(详见部署篇排障实录坑 4)。 - 插件节丢失:
plugins.cfg手工删节后重启会按插件源码自动再生(配置快照机制),想永久关一个插件应改enabled=False而不是删节。
九、参考链接
- 部署与目录挂载:本专栏《pyLoad Docker Compose 部署实战》
- 命令行与 API 运维:本专栏《pyLoad 常用命令与运维实战(核心篇)》
- 版本与生态背景:本专栏《pyLoad 介绍与选型指南》
- 官方源码(配置解析:
src/pyload/core/config/;插件管理器:src/pyload/core/managers/plugin_manager.py):https://github.com/pyload/pyload