Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Config

首先, 我们需要一个配置文件 thurgio.yamlsetting 顶级节包含服务器设置。

tokens

API 令牌,按作用域分组。至少配置一个令牌(否则校验失败)。

setting:
  tokens:
    admin:
      - "admin-token"      # Admin 作用域:可访问全部 /app/ 端点
      - "${THURGIO_ADMIN_TOKEN}"   # 环境变量引用(可选)
    read:
      - "read-token"       # Read 作用域:仅可访问只读渲染端点

令牌通过 ?token= 查询参数或 Authorization: Bearer 请求头传递。

环境变量引用

token 值可写成 ${NAME} 形式,解析期从进程环境读取并替换(自托管免明文存 token)。仅当整个值恰好为 ${NAME} 时展开(如 prefix-${NAME}${NAME}suffix 均保留字面);引用的环境变量未定义时配置解析报错。仅 token 值支持展开,其余配置字段不展开。

address

服务监听地址,默认 0.0.0.0serve 启动时可用 -a/--addressADDRESS 环境变量覆盖。

port

服务监听端口,默认 10100serve 启动时可用 -p/--portPORT 环境变量覆盖。端口为 0 时使用随机端口。

udp

对于节点的 udp 字段处理逻辑。

  • None: 不处理
  • False: 设为 false
  • Try: 如果代理类型支持 udp 则启用(默认
  • True: 设为 true

mode

emoji 模式(全局)。

  • Disable: 不添加 emoji 前缀
  • Enable: 检测到国家/地区时添加旗帜 emoji 前缀(默认
  • Hide: 去除代理名称中已有的 emoji 前缀

output

渲染结果的默认输出路径,按渲染目标 + 模板名分组(键为 provider/snippet,每个桶内再按模板名映射到目录列表):

setting:
  output:
    provider:
      "clash/base.tpl":
        - "prod/list/"
    snippet:
      "rule.tpl":
        - "prod/rules/"

item 默认输出写入 {dir}/{key}.{ext}(key = item 名,ext 来自 ext 字段或参数 p.ext),目录取 item 自己 target 桶 + 自己模板名对应条目;未配置则无默认输出。

旧版的扁平目录列表写法(如 provider: ["prod/"])已不再支持,解析会直接报错(ADR-080)。

ttl

缓存有效期(秒)。

  • provider: 最小 60,默认 600(10 分钟)
  • snippet: 最小 300,默认 86400(24 小时)

缓存未过期时不会重新获取。

concurrency_limit

并发任务限制(渲染/持久化等任务的并发数),最小 1,默认 10。可用环境变量 THURGIO_CONCURRENCY_LIMIT 覆盖。更新管道的抓取阶段为无界并发(每个 item 同时启动,ADR-073),不受此限制约束。

cors_origins

允许的 CORS 来源列表,默认 ["*"]。生产环境建议限制为具体域名;来源列表每请求从 live config 读取,配置热重载后立即生效。

adhoc

临时 provider/snippet(/app/admin/adhoc 端点)的默认行为:

setting:
  adhoc:
    tpl:
      provider: "tpls/adhoc_nodelist.tpl"   # 临时 provider 缺省模板
      snippet: "tpls/adhoc_snippet.tpl"     # 临时 snippet 缺省模板
    max_items: 100                          # 数量上限,超出淘汰最旧创建者
    ttl_seconds: 86400                      # 清理 TTL:自最后访问起算(秒)
字段默认值说明
tpl.provider / tpl.snippet请求未传 tpl 参数时的回退模板;两者都缺且请求也未指定时 → 400
max_items100临时资源数量上限(内存与 DB 一致清理)
ttl_seconds86400滑动 TTL——自最后访问时间起算

example

thurgio.yaml

setting:
  tokens:
    admin:
      - token
  # address: 0.0.0.0 # $ADDRESS
  # port: 10100 # $PORT
  # udp: Try
  # mode: Enable
  # output:
  #   provider:
  #     "base.tpl":
  #       - output/example.yaml
  # ttl:
  #   provider: 600
  #   snippet: 86400
  # concurrency_limit: 10
  # cors_origins:
  #   - "*"