本仓库不运营公共实例。
自托管 Conversion Service 与 Web Console
仍在演进的 Rust 转换后端,外加用来操作你自己那份 Conversion Service 的静态 Web Console。Native 与 Cloudflare Worker 共用同一套宿主中立的 HTTP 与 conversion 模块。你需要自己 clone、运行或部署。
按钮会把 Conversion 与 Console 发到同一个 Worker origin。它不收集 access token。部署完成后 GET /sub 保持匿名,直到你把 SUB_HUB_ACCESS_TOKEN 勾选 Secret 加上。
输入
url 接受一个或多个按顺序、用 | 分隔的源。不支持或无效的节点会被跳过;源与 config 出错则请求失败。
VLESS
vless:// share URI。TCP、WebSocket、gRPC,配合 TLS 或 Reality;Vision 在 target 能保留时保留。
Shadowsocks
SIP002 ss://。闭集 cipher:aes-128-gcm、aes-256-gcm、chacha20-ietf-poly1305,以及两种 2022-blake3-aes-*-gcm。simple-obfs http/tls 在多数 target 保留;Surge skip。
Trojan
trojan://。TCP+TLS 与 WebSocket+TLS。
VMess
vmess:// 加上 v2rayN JSON v2。其他 VMess 方言拒绝。
Hysteria2
hysteria2:// 与 hy2://。hop、salamander、pin 按 target 的 Keep-pass。
TUIC v5
tuic://uuid:password@host:port,query 闭集。
HTTPS 订阅
内容里含上述 share URI 的远端。省略 expand 或 expand=false 时,能写远端引用的 target 会把订阅留给客户端去拉。expand=true 才内联。sing-box 在省略 expand 时仍内联。
ACL4SSR config
可选的 HTTPS config= 选择一份严格 ACL4SSR INI。缺省或空的 config= 是默认 PROXY/AUTO 策略,不是 ACL4SSR profile,也不是第二套 Rule frontend。
策略与 query
- 缺省或空的 config= 走 PROXY/AUTO(select:AUTO + 节点 + Direct,url-test AUTO,MATCH → PROXY)。
- expand 是已接受的 query。Web Console 开关默认打开并写入 expand=true。
- filename 是下载名 stem(1–64 字节)。服务补上各 target 的扩展名。省略则用 sub-hub-<target>.<ext>。
- GET/HEAD request-target 超过 8 KiB 返回 414。
客户端 target
target 必须是下列精确 token。列出的是会导入该文档的流行客户端,不是额外的 HTTP token。不要把 stash、surfboard、shadowrocket 当成 target。
clash / mihomo
Mihomo YAML。clash 是 Clash 兼容名;Clash Meta 客户端通常导入 clash。
Clash Verge Rev, FlClash, Clash Meta for Android, Stash, OpenClash, Karing, Hiddify
quanx
Quantumult X conf。
Quantumult X
singbox
sing-box JSON。
SFA, SFI/SFM, GUI.for.sing-box, Throne, Karing, Hiddify, NekoBox
loon
Loon conf。
Loon
egern
Egern YAML。
Egern
surge
Surge conf。Surfboard 跟随 Surge,不支持 VLESS。
Surge, Surfboard
Web Console
Workshop PWA 在 apps/console。你填写 Conversion Service origin,在独立字段里放 access token,组装 GET /sub 或 GET /sub/:token,Preview 同一条 Subscription URL,再复制或下载结果。
- 每个平台都提供 clash://install-config。iPhone 与 iPad 还会提供 Surge、Loon、Egern、sing-box 的第一方一键导入。
- 不增加 POST 转换,也不增加额外 query 开关。
- Worker 上 layout all 的同源 Console 不需要 SUB_HUB_CORS_ORIGINS。对着 loopback 的 Vite Workshop 需要。
怎么运行
这里没有托管的 Sub Hub。要自己控机器用 Native;不想装 Rust 工具链就用 GitHub Release 二进制;要 Conversion 加 Console 就发 Cloudflare Worker。
Native(开发)
mise install,然后 cargo run --locked -p sub-hub-native。安全默认监听 127.0.0.1:25500。用 GET /version 确认。
Native(GitHub Releases)
未签名的 linux-amd64、windows-amd64、macos-arm64 压缩包。不含 Web Console,也未公证。
Cloudflare Worker
Deploy-to-Cloudflare 发布 layout all:一个 Worker,Console 资产在同一 origin。GET /version 始终公开。对外的 Worker 把 SUB_HUB_ACCESS_TOKEN 设成 Secret 后,客户端走 GET /sub/<token>。
闭集 HTTP 面
当前兼容面只包含:
- GET /version
- GET /sub 与 HEAD /sub
- 配置了 SUB_HUB_ACCESS_TOKEN 时的 GET /sub/:token 与 HEAD /sub/:token
- 没有 POST 转换、capabilities 端点或管理 API。
- 设置 token 后 GET /version 仍公开。错误 token:401 Unauthorized!。未设置:GET /sub 保持匿名,GET /sub/:token 返回 404 Not Found。
- 有节点被跳过时,GET/HEAD /sub 会加 x-subconverter-skipped(响应还不是 lossy 时再加 x-subconverter-result: partial)。
不在范围内
- 本站与本仓库都不提供公共转换实例。
- 没有 Dockerfile、docker-compose 或 GHCR 发布任务。
- 没有 AnyTLS、WireGuard、SSR。没有第二套 Rule frontend。
- 没有额外的 subconverter 开关(include / exclude / emoji / udp / scv / sort)。
许可
Sub Hub 使用 GNU Affero General Public License v3.0 or later。它常作为网络服务部署;AGPL 第 13 条要求修改后对外提供网络服务的运营方向用户提供对应源码。