-
Notifications
You must be signed in to change notification settings - Fork 113
Configuration
主配置支持 TOML、YAML 和 INI。新部署推荐从 base/pref.example.toml 创建 base/pref.toml。
程序参数:
-f <path>
--file <path>
官方启动脚本还支持 PREF_PATH。未指定时,启动脚本按平台查找 pref.toml、pref.yml、pref.ini,并在缺失时从对应示例创建配置。
通常按以下顺序理解:
- 请求参数覆盖当前请求行为;
- 受支持的环境变量覆盖配置文件;
- 配置文件;
- 程序兼容默认值。
只有部分配置项支持环境变量覆盖;请求参数不能绕过部署安全策略。具体例外见对应功能页面。
| 配置段 | 作用 |
|---|---|
[common] |
默认输入、外部配置、基础模板、三类出站代理和通用行为 |
[proxy_provider] |
Mihomo Provider 默认间隔和 proxy: DIRECT
|
[custom_openclash_rules] |
COCR 服务端取源回落 |
[node_pref] |
节点排序、过滤、名称和输出风格 |
[managed_config] |
托管配置前缀、更新间隔和严格更新 |
[remote_subscription] |
Surge、Surfboard、Loon 的客户端原生远程资源开关 |
[singbox] |
Sing-box 目标行为 |
[security] |
lan、public、strict 和公开上传 |
[statistics] |
统计持久化、地理来源和 Dashboard 认证 |
[emojis] |
Emoji 添加、删除和规则导入 |
[ruleset] / [[rulesets]]
|
规则生成和规则集列表 |
[[custom_groups]] |
自定义策略组 |
[template] |
模板路径和全局变量 |
[[aliases]] |
URL 别名 |
[server] |
监听地址、端口和静态文件根目录 |
[advanced] |
日志、并发、资源限制、缓存、TLS 和请求合并 |
version = 1
[managed_config]
managed_config_prefix = "http://192.168.1.10:25500"
[security]
profile = "lan"
allow_public_upload = false
[statistics]
enabled = false
[server]
listen = "0.0.0.0"
port = 25500实际配置仍需要保留示例文件中的模板、规则集和其他必要段。不要用上面的片段直接覆盖完整示例。
| 环境变量 | 作用 |
|---|---|
PORT |
覆盖监听端口 |
MANAGED_CONFIG_PREFIX |
覆盖托管配置前缀 |
MANAGED_PREFIX |
旧兼容名称;与新名称同时设置时优先新名称 |
SUBCONVERTER_SECURITY_PROFILE |
覆盖安全档位 |
SUBCONVERTER_ALLOW_PUBLIC_UPLOAD |
覆盖公开上传开关候选值 |
SUBCONVERTER_MAX_CONCURRENT_THREADS |
覆盖基础并发线程数 |
SUBCONVERTER_MAX_SERVER_THREADS |
覆盖 HTTP 最大线程数 |
SUBCONVERTER_RESOURCE_CONTROL |
覆盖 advanced.resource_control
|
SUBCONVERTER_FORCE_MAX_CURVE_FINGERPRINT |
覆盖 advanced.force_max_curve_fingerprint 可选硬件 pin |
SUBCONVERTER_REQUEST_DEADLINE_MS |
覆盖整个 HTTP 请求的截止时间 |
SUBCONVERTER_DISABLE_COALESCING |
禁用请求合并 |
SUBCONVERTER_COALESCE_RETRY_ON_5XX |
控制合并请求首次 5xx 后的内部重试 |
SUBCONVERTER_RESPONSE_CACHE_TTL |
覆盖 /sub 响应微缓存 TTL |
SUBCONVERTER_DASHBOARD_CLIENT_IP_HEADER |
Dashboard 可信代理客户端地址头 |
SUBCONVERTER_DASHBOARD_TRUSTED_PROXY_CIDRS |
对应可信代理 CIDR |
SUBCONVERTER_GIST_API_BASE 仅用于受控的 Gist API 入口,常规部署无需修改。
[managed_config]
managed_config_prefix = "https://sub.example.com"它必须是客户端实际能够访问的地址。错误地保留 127.0.0.1 会让其他设备得到指向自身回环地址的更新链接。
[server]
listen = "0.0.0.0"
port = 255000.0.0.0 表示监听全部 IPv4 接口,不表示已经公网可达,也不表示安全。只允许本机访问时使用回环地址或在容器层只发布到回环地址。
advanced.resource_control 支持三个值:
| 值 | 用户可见行为 |
|---|---|
compat |
默认值。使用同步、有界的兼容路径,并保留显式配置的基础线程和等待队列限制。 |
adaptive |
使用协作式异步转换路径,并根据可观测的 CPU、内存压力和文件描述符状态管理并发。 |
force_max |
只有在硬件与 cgroup 资源可完整探测,且可选硬件 pin 匹配时,才应用硬件感知的启动预算;否则实际模式回落为 compat。 |
未知值会导致启动失败,不会静默改用其他模式。force_max_curve_fingerprint 是已弃用的可选硬件 pin;留空表示不固定硬件。它不代表已验证的容量曲线,也不应作为性能保证。
正式 Release 配置示例中的相关值:
| 配置项 | 示例值 | 说明 |
|---|---|---|
resource_control |
compat |
资源控制模式 |
max_pending_connections |
10240 |
普通模式的 HTTP 等待队列上限;force_max 应用预算时由程序重新计算 |
max_concurrent_threads |
16 |
HTTP 基础工作线程数 |
max_server_threads |
128 |
HTTP 动态工作线程总上限;小于基础线程数时会自动提高 |
资源容量相关配置在运行期间冻结,修改后需要重启进程。不要为了追求“更快”直接把限制设为无限或盲目提高线程数。调整前先观察内存、CPU 压力、文件描述符、队列和请求延迟。
advanced.request_deadline_ms 限制整个 HTTP 请求的绝对处理时间,单位为毫秒。正式 Release 配置示例为 15000;SUBCONVERTER_REQUEST_DEADLINE_MS 可覆盖该值。程序会把有效值收敛到 100~300000 毫秒。
该值不是单次远程下载超时,也不是客户端等待时间;它是服务端对当前 HTTP 请求的总截止时间。降低前需考虑订阅与规则来源的正常延迟;提高前需考虑并发请求对线程、连接和内存的占用。
| 配置项 | 示例值 | 影响 |
|---|---|---|
enable_cache |
true |
控制订阅、外部配置和规则集下载缓存;设为 false 时,下列三个 TTL 都按 0 处理 |
cache_subscription |
60 |
订阅下载缓存 TTL,单位秒 |
cache_config |
300 |
外部配置及通用配置资源缓存 TTL,单位秒 |
cache_ruleset |
21600 |
规则集下载缓存 TTL,单位秒 |
response_cache_ttl |
0 |
符合请求合并条件、未启用 Age 加密的 200 /sub 响应微缓存;0 关闭,正值最大收敛为 5 秒 |
response_cache_ttl 与三类下载缓存相互独立;enable_cache=false 不会自动关闭响应微缓存。SUBCONVERTER_RESPONSE_CACHE_TTL 可覆盖响应微缓存 TTL。
advanced.max_allowed_rulesets 在 TOML、YAML 和 INI 正式示例中统一为 64。0 表示不限制,但公网服务不应在没有对应内存、下载大小和请求截止策略时使用无限制。
advanced.allow_insecure_tls=false 应保持默认。它不是网络失败的通用重试开关。
common.reload_conf_on_request 会改变配置加载频率。启用前需要确认配置读取开销和并发行为;常规部署建议修改配置后显式重启服务,便于确认最终生效值。
启动后检查日志中的:
- 配置格式已加载;
- 最终安全档位及来源;
- 上传策略;
- 并发和缓存参数;
- 监听地址和端口。
随后访问 /version 并执行真实 /sub。只看到进程运行不代表配置已经按预期加载。