pyLoad 配置参数详解

pyLoad(pyload-ng)配置参数详解:pyload.cfg 核心配置 7 节逐参数实测读回(download/general/log/permission/proxy/reconnect/webui)、339 节插件配置结构、PUID/PGID/TZ 实测效果、三种修改途径生效规则与排障实录。

pyLoad下载管理器NAS 自托管电子表格Python 编程2026/10/28

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.cfg339 个插件的逐节配置(每个 hoster/decrypter/addon/extractor 一节)同上;插件管理器首次启动自动生成
accounts.cfg/config/settings/accounts.cfg高级账户凭据(按插件名分节)WebUI 账户页、API add_account
pyload.db/config/data/pyload.db队列/链接/用户/API key/插件运行状态等动态数据核心(运行时)

两个关键实测结论,决定你的修改姿势:

  1. pyload.cfg / plugins.cfg 是"声明式快照":文件里每行都带类型与描述(int max_downloads : "Maximum parallel downloads" = 3),由核心在启动时解析、修改时整体重写。直接手改文件必须停服进行,否则运行中的核心随时会用内存值重写文件、覆盖你的修改(本次实测中两次 restart 均观察到 cfg 被重写);
  2. 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))TrueHTTPS 证书校验策略
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_portFalse / local / localhost / 514输出到本机或远程 syslog(集中式日志用)

3.4 permission —— 权限(容器场景重点)

参数(类型)默认/实测值说明
change_user / change_group(bool)False下载完成后 chown 文件属主/属组
user / group(str)abcchown 目标用户/组名(社区镜像的 s6 运行账号默认名)
change_file / change_folder(bool)False是否强制 chmod
file / folder(str)0644 / 0755chmod 目标权限
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)FalseDNS 解析是否走代理(抗 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)TrueWebUI 总开关(纯 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)FalseHTTPS;证书路径默认 /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 实测)
PUID1000容器内 id 回显 uid=1000;/config/settings/pyload.cfg 属主 1000:1000;下载产物属主 1000
PGID1000同上,gid=1000
TZAsia/Shanghai容器内 date 回显 CST 12:48(东八区);日志时间戳同步为本地时区

三条实测经验:

  1. PUID/PGID 必须与宿主上你对 /config、/downloads 两个目录有读写权的 uid/gid 一致,否则首启即报权限错误(现象:日志反复 Permission denied 或 WebUI 502);
  2. 改 PUID/PGID 后需重建容器(docker compose up -d)才重新映射身份;已有配置文件属主不会自动 chown,必要时手动 chown -R;
  3. 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

四个高频实操点(全部实测验证):

  1. 解包全链路的开关组合:ExtractArchive(addon 总开关,默认关)+ UnZip/UnRar/SevenZip/UnTar(适配器,默认关)必须同时置 enabled = True 才会自动解包——这是新装 pyLoad 最常见的"为什么不解压"根因;
  2. 改 enabled 的正规姿势是 API/WebUI:set_config_value(section 传 plugin)写入即持久化,实测回显 null 且文件即时更新;直接手改文件则必须停服;
  3. 插件配置会随插件更新而演进:插件管理器启动时按插件源码重新生成缺省节(bool enabled : "Activated", False 是 addon 类的兜底),旧节不会被删除,升级后新参数以默认值出现;
  4. 一节一插件、节名即插件名:service_call、账号绑定、日志标签里的插件名与节名严格一致(如 ExtractArchive、UnZip),排障时可以按名对齐。

六、accounts.cfg 账户配置

首启时按全部账户类插件生成空节骨架(实测节选):

version: 1

AccioDebridCom:

AlldebridCom:

ArchiveOrg:

绑定真实账户后,对应节内写入凭据(WebUI → Accounts 页或 POST /api/add_account)。实测注意:凭据为明文落盘,accounts.cfg 权限为 0600(实测 -rw-------),备份该文件时一并注意保管;主机被入侵等同于全部高级账户泄露。

七、修改途径对比与生效规则(实测结论)

途径操作生效时机实测要点
WebUISettings → Core/Plugins 表单立即适合人工调整;表单项与 cfg 键一一对应
REST APIPOST /api/set_config_value立即实测 {"category":"download","option":"max_speed","value":512,"section":"core"} 回显 null,文件即时变 512;读回用 GET /api/get_config_value?category=…&option=…&section=…
手改文件编辑 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&section=core'
# 实测回显:8000

# 读并行下载数
curl -s -H "X-API-Key: $KEY" 'http://127.0.0.1:8133/api/get_config_value?category=download&option=max_downloads&section=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 文件同步落盘)

八、排障实录

  1. 改了 pyload.cfg 不生效:运行中手改被覆盖(本文第二节机制)。实测中两次 restart 均观察到 cfg 被核心重写。正确姿势:API 修改或停服手改。
  2. PUID 改了但配置文件属主没变:s6 只在新文件创建时应用 uid;存量文件需手动 chown -R 1000:1000 /config /downloads 后重启。
  3. 时区不对导致下载时段错位:TZ 未设置时容器回退 UTC,start_time/end_time 窗口整体偏移 8 小时(东八区);实测设置 TZ=Asia/Shanghai 后 date 即回显 CST。
  4. 解包不触发:优先检查 ExtractArchive 与对应适配器两层的 enabled(第五节第 1 点);若曾用错误参数手动触发过解包,还需清理 pyload.db 中 storage 表的残留队列(详见部署篇排障实录坑 4)。
  5. 插件节丢失:plugins.cfg 手工删节后重启会按插件源码自动再生(配置快照机制),想永久关一个插件应改 enabled=False 而不是删节。

九、参考链接