Skip to content

Configuration

Aethersailor edited this page Aug 23, 2026 · 4 revisions

⚙️ 配置文件参考

主配置支持 TOML、YAML 和 INI。新部署推荐从 base/pref.example.toml 创建 base/pref.toml

配置选择

程序参数:

-f <path>
--file <path>

官方启动脚本还支持 PREF_PATH。未指定时,启动脚本按平台查找 pref.tomlpref.ymlpref.ini,并在缺失时从对应示例创建配置。

配置来源优先级

通常按以下顺序理解:

  1. 请求参数覆盖当前请求行为;
  2. 受支持的环境变量覆盖配置文件;
  3. 配置文件;
  4. 程序兼容默认值。

只有部分配置项支持环境变量覆盖;请求参数不能绕过部署安全策略。具体例外见对应功能页面。

主要配置段

配置段 作用
[common] 默认输入、外部配置、基础模板、三类出站代理和通用行为
[proxy_provider] Mihomo Provider 默认间隔和 proxy: DIRECT
[custom_openclash_rules] COCR 服务端取源回落
[node_pref] 节点排序、过滤、名称和输出风格
[managed_config] 托管配置前缀、更新间隔和严格更新
[remote_subscription] Surge、Surfboard、Loon 的客户端原生远程资源开关
[singbox] Sing-box 目标行为
[security] lanpublicstrict 和公开上传
[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 = 25500

0.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 配置示例为 15000SUBCONVERTER_REQUEST_DEADLINE_MS 可覆盖该值。程序会把有效值收敛到 100300000 毫秒。

该值不是单次远程下载超时,也不是客户端等待时间;它是服务端对当前 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 正式示例中统一为 640 表示不限制,但公网服务不应在没有对应内存、下载大小和请求截止策略时使用无限制。

advanced.allow_insecure_tls=false 应保持默认。它不是网络失败的通用重试开关。

热重载

common.reload_conf_on_request 会改变配置加载频率。启用前需要确认配置读取开销和并发行为;常规部署建议修改配置后显式重启服务,便于确认最终生效值。

验证配置来源

启动后检查日志中的:

  • 配置格式已加载;
  • 最终安全档位及来源;
  • 上传策略;
  • 并发和缓存参数;
  • 监听地址和端口。

随后访问 /version 并执行真实 /sub。只看到进程运行不代表配置已经按预期加载。

Clone this wiki locally