init: init proj

This commit is contained in:
2026-08-25 11:35:05 +08:00
commit bf7f2df67e
80 changed files with 9936 additions and 0 deletions

135
docs/ADDING-REGIONS.md Normal file
View File

@@ -0,0 +1,135 @@
# 新增地区与新增站点
当舰队里加入新地区(香港、日本、韩国、台湾、英国……)的节点时,按本文操作。
> 背景:策略组的地区筛选靠**节点名称正则**,不靠节点的 `region` 字段。所以节点命名是一切的前提。
## 当前状态2026-08-24
只有美国与新加坡两个地区的节点,因此策略组里只有 `🇺🇸 United States``🇸🇬 Singapore` 两个地区组。
香港、日本、台湾、英国、韩国的地区组**已删除**——留着会是空组,在客户端里显示为无可用节点。
兜底的 `🌍 Other` 组也已删除:所有节点都能被现有两个地区组收纳,它恒为空。
## 一、给新节点命名(决定它能被哪个组收纳)
命名格式:`<国旗> <国家码> · <站点码> · <协议> · <出口>`
```
🇭🇰 HK · VMess · 直连
🇯🇵 JP · Trojan · WARP
🇺🇸 US · LA · VMess · 直连 ← 同国多站点时插入站点码
```
- **国家码必须出现在名字里**HKJPUSSG…地区组的正则靠它匹配
- 出口词(`直连` / `WARP`)必须保留:客户端里没有出口标签,用户只能靠名字区分同协议的两条线路。界面上显示时会自动隐去,不必担心重复
- 站点码LARNAWS用于节点页的分段归类来自节点的 `region` 字段
节点的 `region` 字段填站点码(`SG``LA``RN``HK`…),它决定节点页里归到哪一段。
## 二、让站点标题显示国旗
`web/src/components/stations.ts``STATION_LABELS` 加一行:
```ts
const STATION_LABELS: Record<string, string> = {
SG: '🇸🇬 SG AWS',
LA: '🇺🇸 US LA',
RN: '🇺🇸 US RN',
HK: '🇭🇰 HK 香港站点名', // ← 新增
};
```
未配置的站点码会原样显示,不影响功能。
## 三、新建地区策略组
在「策略组」页点「添加策略组」,按下表填写:
| 字段 | 值 |
|---|---|
| 名称 | `🇭🇰 Hong Kong`emoji 前缀 + 英文原名) |
| 类型 | `url-test` |
| 成员 | 留空 |
| 收纳全部节点 | **开启** |
| 名称筛选正则 | 见下方对照表 |
| 测速 URL | `http://cp.cloudflare.com/generate_204` |
| 间隔 | `300` |
| 容差 | `50` |
「收纳全部节点」+「筛选正则」的组合会生成 `include-all-proxies=true, policy-regex-filter=…`Surge`include-all-proxies: true, filter: …`Clash`use=true, policy-regex-filter=…`ShadowRocket三端都是**动态筛选**——之后再加同地区节点会自动进组,不用改配置。
各地区的正则(取自原模板,可直接复制):
```
香港 港|🇭🇰|香港|HK|Hong
日本 日|🇯🇵|日本|JP|Japan
台湾 台|🇹🇼|台湾|TW|Tai
韩国 韩|韩国|Korea|KR|🇰🇷
英国 🇬🇧|英国|英|英格兰|UK|United Kingdom
新加坡 坡|🇸🇬|新加坡|狮城|SG|Singapore
美国 美|🇺🇸|美国|US|States|American
```
## 四、兜底组 `🌍 Other`(当前不存在)
原模板有一个 `🌍 Other` 组,用否定前瞻正则收纳「不属于任何已建地区组」的节点。**当前已删除**,因为现有节点都能被美/新两个组收纳,它恒为空。
只有当你加入的节点**不属于任何已建地区组**(比如加了德国节点但没建德国组)时,才需要重建它:
| 字段 | 值 |
|---|---|
| 名称 | `🌍 Other` |
| 类型 | `url-test`,收纳全部节点开启 |
| 筛选正则 | 见下(把所有**已建**地区组的关键字排除掉) |
```
^((?!港|🇭🇰|香港|HK|Hong|日|🇯🇵|日本|JP|Japan|坡|🇸🇬|新加坡|狮城|SG|Singapore|美|🇺🇸|美国|US|States|American|Remain|Expired|官网|如需|套餐|去除|剩余|距离|Reset|重置|流量).)+$
```
**如果重建了 Other每次新增地区组都必须往这个否定前瞻里追加对应关键字**,否则新地区节点会同时出现在自己的组和 Other 里。
## 五、把新地区加进服务组的可选项
新建地区组后,它不会自动出现在服务组的成员里。按需编辑这些组,把新地区加进成员列表:
| 组 | 当前成员 | 建议 |
|---|---|---|
| `⚡️ Automatic` | SG、US | 加入所有地区组 |
| `🚀 Proxy` | Automatic、SG、US | 加入所有地区组 |
| `🎬 Streaming` | SG、US | 加入解锁能力强的地区HK/TW/JP |
| `🤖 AI` | Automatic、US、SG | 加入 JP、US 等 AI 服务可用地区 |
| `🌐 Global Services` | Automatic、US、SG | 同 AI |
| `🍎 Apple` | Mainland、US | 按需加入 HK |
成员的顺序就是客户端里的排列顺序,**第一个成员是该组的默认选中项**。
## 六、地区流媒体解锁规则(可选)
模板原有 `stream_hk``stream_jp``stream_tw``stream_kr``stream_eu` 等按地区解锁的规则集。删除地区组时,这些规则被改指向了 `🎬 Streaming`
如果新建了对应地区组,可以在「规则」页把这些规则的策略改回该地区组,解锁效果更精准:
| 规则集 | 建议策略 |
|---|---|
| `stream_hk`non_ip + ip 两条) | `🇭🇰 Hong Kong` |
| `stream_jp`(两条) | `🇯🇵 Japan` |
| `stream_tw``stream_kr``stream_eu` | 对应地区组 |
## 七、验证
1. 「策略组」页:新地区组的**命中**一栏应列出该地区的所有节点
2. 「节点」页:新站点应有独立分段,标题显示国旗
3. 命令行校验 Clash 产物:
```bash
curl -s "http://<host>/sub/<token>/clash" > /tmp/c.yaml && mihomo -t -f /tmp/c.yaml
```
4. 若重建过 `🌍 Other`,确认它的命中里**不再包含**新地区节点
## 删除某个地区(反向操作)
1. 把指向该组的规则改指向别的组否则规则会被自动跳过——IR 层有悬空引用防护,但那是兜底不是意图)
2. 从其他组的成员里摘掉它
3. 删除该组
4. Other 的排除列表可以保留该地区关键字(留着无害,将来重建时省事)
> 上述 13 步如果漏做生成器不会产出无效配置悬空引用会被自动跳过、FINAL 会降级为 DIRECT但分流意图会悄悄改变所以要显式处理。