Skip to content

基础配置(实验功能)

⚠️ 如果你尚不了解 Sing-Box/Clash/Surge 的配置结构,请不要启用此功能。当前仍处在实验阶段,可能会遇到不可预期的问题。

Sublink Worker 允许你上传自定义的基础配置,在转换订阅时作为模板套用。该能力面向高级用户,默认保留 30 天并存储在 KV 中。

功能概览

  • 支持 Sing-BoxClashSurge 三种配置模板。
  • 在前端或 /config API 中粘贴配置内容,即可生成唯一 configId
  • 请求 /singbox/clash/surge 时附带 configId,即可在生成配置时使用自定义模板。
  • KV 中的配置将进行格式校验,失败会返回 400。

默认模板

Sing-Box

json
{
  "dns": {
    "servers": [
      { "type": "tcp", "tag": "dns_proxy", "server": "1.1.1.1", "detour": "🚀 节点选择", "domain_resolver": "dns_resolver" },
      { "type": "https", "tag": "dns_direct", "server": "dns.alidns.com", "domain_resolver": "dns_resolver" },
      { "type": "udp", "tag": "dns_resolver", "server": "223.5.5.5" },
      { "type": "fakeip", "tag": "dns_fakeip", "inet4_range": "198.18.0.0/15", "inet6_range": "fc00::/18" }
    ],
    "rules": [
      { "rule_set": "geolocation-!cn", "query_type": ["A", "AAAA"], "server": "dns_fakeip" },
      { "rule_set": "geolocation-!cn", "query_type": ["CNAME"], "server": "dns_proxy" },
      { "query_type": ["A", "AAAA", "CNAME"], "invert": true, "action": "predefined", "rcode": "REFUSED" }
    ],
    "final": "dns_direct",
    "independent_cache": true
  },
  "ntp": { "enabled": true, "server": "time.apple.com", "server_port": 123, "interval": "30m" },
  "inbounds": [
    { "type": "mixed", "tag": "mixed-in", "listen": "0.0.0.0", "listen_port": 2080 },
    { "type": "tun", "tag": "tun-in", "address": "172.19.0.1/30", "auto_route": true, "strict_route": true, "stack": "mixed", "sniff": true },
    { "type": "socks", "listen": "127.0.0.1", "listen_port": 2081, "tag": "REJECT-in" }
  ],
  "outbounds": [
    { "type": "socks", "server": "127.0.0.1", "server_port": 2081, "tag": "REJECT" },
    { "type": "direct", "tag": "DIRECT" }
  ],
  "route": {
    "default_domain_resolver": "dns_resolver",
    "rule_set": [
      { "tag": "geosite-geolocation-!cn", "type": "local", "format": "binary", "path": "geosite-geolocation-!cn.srs" }
    ],
    "rules": [ { "inbound": ["DIRECT-in"], "action": "direct" } ]
  },
  "experimental": {
    "cache_file": { "enabled": true, "store_fakeip": true },
    "clash_api": { "external_controller": "127.0.0.1:9090", "external_ui": "dashboard" }
  }
}

Clash

yaml
port: 7890
socks-port: 7891
allow-lan: false
mode: Rule
log-level: info
dns:
  enable: true
  ipv6: true
  respect-rules: true
  enhanced-mode: fake-ip
  nameserver:
    - https://120.53.53.53/dns-query
    - https://223.5.5.5/dns-query
  proxy-server-nameserver:
    - https://120.53.53.53/dns-query
    - https://223.5.5.5/dns-query
  nameserver-policy:
    geosite:cn,private:
      "https://120.53.53.53/dns-query"
      "https://223.5.5.5/dns-query"
    geosite:geolocation-!cn:
      "https://dns.cloudflare.com/dns-query"
      "https://dns.google/dns-query"

Surge

Surge 的基础配置既可以使用 JSON,也可以使用 Surge 原生的 INI/Conf 格式。通过前端保存时,INI 内容会自动转换为 JSON 并存入 KV。下面示例与仓库默认 SURGE_CONFIG 保持一致,可直接作为自定义的起点。

json
{
  "general": {
    "allow-wifi-access": false,
    "wifi-access-http-port": 6152,
    "wifi-access-socks5-port": 6153,
    "http-listen": "127.0.0.1:6152",
    "socks5-listen": "127.0.0.1:6153",
    "allow-hotspot-access": false,
    "skip-proxy": "127.0.0.1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,100.64.0.0/10,17.0.0.0/8,localhost,*.local,*.crashlytics.com,seed-sequoia.siri.apple.com,sequoia.apple.com",
    "test-timeout": 5,
    "proxy-test-url": "http://cp.cloudflare.com/generate_204",
    "internet-test-url": "http://www.apple.com/library/test/success.html",
    "geoip-maxmind-url": "https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb",
    "ipv6": false,
    "show-error-page-for-reject": true,
    "dns-server": "119.29.29.29, 180.184.1.1, 223.5.5.5, system",
    "encrypted-dns-server": "https://223.5.5.5/dns-query",
    "exclude-simple-hostnames": true,
    "read-etc-hosts": true,
    "always-real-ip": "*.msftconnecttest.com, *.msftncsi.com, *.srv.nintendo.net, *.stun.playstation.net, xbox.*.microsoft.com, *.xboxlive.com, *.logon.battlenet.com.cn, *.logon.battle.net, stun.l.google.com, easy-login.10099.com.cn,*-update.xoyocdn.com, *.prod.cloud.netflix.com, appboot.netflix.com, *-appboot.netflix.com",
    "hijack-dns": "*:53",
    "udp-policy-not-supported-behaviour": "REJECT",
    "hide-vpn-icon": false
  },
  "replica": {
    "hide-apple-request": true,
    "hide-crashlytics-request": true,
    "use-keyword-filter": false,
    "hide-udp": false
  }
}

约束与最佳实践

  1. 格式要求
    • Sing-Box 模板必须是有效 JSON;Surge 模板可为 JSON 或有效的 Surge INI/Conf(UI 会自动转换为 JSON);Clash 模板必须是有效 YAML。
    • 各客户端配置不可混用,不会自动转换缺失字段。
  2. 保留字段
    • 系统不会自动添加 blockdirect 等节点,请确保在模板内声明。
    • 建议仅调整 DNS、NTP、代理策略等模块,保持核心结构稳定。
  3. 保存与分享
    • 点击前端的 “保存基础配置” 按钮或调用 /config API。
    • 成功后会返回 configId,在访问 URL 中附加 configId=xxx 即可复用。
  4. 验证流程
    • 提交前可利用本地客户端验证格式。
    • 保存时若校验失败,接口会返回 400 与错误原因。

API 示例:保存配置

bash
curl -X POST https://<worker-domain>/config \
  -H 'Content-Type: application/json' \
  -d '{
        "type": "clash",
        "content": "port: 7890\\nmode: Rule"
      }'

返回值类似 {"configId": "clash_abc123"},可在 /clash?config=<...>&configId=clash_abc123 中直接引用。

遵循 MIT 许可证