Files
proxy-station/README.md
YANG JIANKUAN e5a3c70773 fix: ShadowRocket 策略组改用 policy-regex-filter 收节点
ShadowRocket 没有 Surge 的 use= 订阅引用语法,首版 conf 里
「订阅名 + use=true」在真机上解析失败,All Nodes 组只显示一个
无效的 Proxy Group 残留成员。改为原生的 policy-regex-filter
从 App 内全部节点筛选(收纳全部节点 = .*),订阅命名约束随之
取消,删除 SHADOWROCKET_SUB_NAME 常量并同步前端提示与文档。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 13:52:27 +08:00

86 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Proxy Station
自托管的代理节点与分流规则管理平台。在 Web 界面里管理多协议节点与策略组、规则,向 macOS、iOS、Android 三端下发托管订阅——客户端填一次 URL之后配置自动更新。
```
节点 ──┐
策略组 ──┼──→ ProfileIR ──┬──→ Surge .conf
规则 ──┘ ├──→ ShadowRocket 节点订阅 + 规则配置
└──→ ClashMeta .yaml
```
## 能做什么
**多协议节点管理**——VMess、Trojan、Shadowsocks、Hysteria2支持粘贴分享链接批量导入`vmess://``trojan://``ss://` 的 SIP002 与 Xray 两种写法、`hysteria2://`),也支持手动填写与导出。节点按站点分段展示。
**分流规则与策略组**——首次启动自动从 [ClashConnectRules/Surge](https://github.com/ClashConnectRules/Surge) 模板导入26 个策略组 + 88 条规则含广告拦截、AI 服务、流媒体、国内直连等)。规则可排序、改策略、启停、增删;策略组可启停并调整顺序,顺序即客户端里的排列顺序。外部规则集可在界面上实时预览内容。
**按客户端自动适配**——同一份数据生成三端配置,客户端不支持的协议在下发时自动屏蔽(例如 Surge 的 ss 类型没有 WebSocket 传输SS over WS 节点会被排除字段差异自动映射cipher 命名、VMess AEAD、Hysteria2 混淆参数等)。
**按订阅分配节点**——每个订阅可以只开放部分节点,用于把不同线路分给不同设备或他人。
## 客户端支持
| 客户端 | 节点 | 策略组 | 规则 | 导入方式 |
|---|:--:|:--:|:--:|---|
| **Surge** (macOS) | ✅ | ✅ | ✅ | 一个 URL托管配置自动更新`#!MANAGED-CONFIG` |
| **ClashMeta** (Android) | ✅ | ✅ | ✅ | 一个 URL`RULE-SET` 自动映射为 rule-providers |
| **ShadowRocket** (iOS) | ✅ | ✅ | ✅ | **两个 URL**:节点订阅 + 规则配置,见下 |
ShadowRocket 的原生订阅格式只承载节点,因此拆成两步:先在「订阅」里添加节点链接(名称随意),再在「配置」里添加规则链接。策略组通过 `policy-regex-filter` 从 App 内全部节点里筛选。订阅页的 ⓘ 图标里有同样的说明。
> ClashMeta 侧无 Clash 版本的规则集,由本服务实时拉取 Surge 版并转换后提供,无需外部转换服务。
## 快速开始
```bash
pnpm install
pnpm dev # server :3000 + web :5173
```
打开 http://localhost:3000 (或开发时的 :5173然后
1. **节点** → 批量导入,粘贴分享链接。命名建议带地区词(如 `🇺🇸 US LA VMess Direct`),地区策略组靠节点名正则匹配
2. **订阅** → 新建订阅,勾选要开放的节点
3. 复制对应客户端的 URL 填进客户端
两端都监听 `0.0.0.0`,手机在同一局域网下用 `http://<你的内网IP>:5173` 即可访问管理界面,页面上显示的订阅 URL 会自动带上该地址。
## 部署
```bash
ADMIN_TOKEN=<随机长字符串> docker compose up -d
```
SQLite 落在 `./data` 卷。订阅 URL 由请求来源自动推断,无需配置基址。
**公网部署的两条硬要求**:设置 `ADMIN_TOKEN`(未设置时管理接口只放行 localhost 与局域网);用反向代理提供 **HTTPS**——订阅 token 就在 URL 里,明文传输会泄露。反代的 access log 建议对 `/sub/` 路径脱敏。
## 校验
```bash
# Clash 产物(最有价值的一条端到端验证)
curl -s "http://localhost:3000/sub/<token>/clash" > /tmp/c.yaml && mihomo -t -f /tmp/c.yaml
pnpm -r typecheck
pnpm test
```
Surge 与 ShadowRocket 需真机导入验收。
## 文档
| 文件 | 内容 |
|---|---|
| `docs/SEEDING.md` | 从 edge-nodes 交付文档导入真实节点、命名建议 |
| `docs/ADDING-REGIONS.md` | 新增地区(香港、日本等)时的节点命名与策略组配套步骤 |
| `CLAUDE.md` | 架构要点与开发约定 |
## 安全
数据库存有节点真实凭据。`data/``*.db``.env` 已在 `.gitignore` 中,**绝不入 git**;仓库内所有示例、测试、模板一律使用占位凭据。订阅 token 可随时在「订阅」页禁用或删除。
## 技术栈
pnpm monorepo`server/`Hono + better-sqlite3 + Drizzle `web/`Vue 3 + Vite + Naive UI + Pinia `shared/`zod schema 与 DTO前后端共用。生产模式由 server 静态托管前端产物,单端口运行。