feat(dual-link-proxy): 一键安装脚本,空机器一条命令装完链路与面板

- 新增 scripts/install-dual-link.sh:装 3x-ui → 建两条 VLESS+WS 入站(绑 127.0.0.1)
  → 80 vhost 完成 ACME → 签证书 → 切 443 → 可选面板子域 + Basic Auth → 实测 101 并打印链接;
  支持 --dry-run 干跑、--yes 无人值守、已有 3x-ui 时复用而不重置密码
- 3xui-api.py 补 uuid / link / del-inbound 三个子命令,add 的 --uuid 改为可选
- verify-links.sh 统计实际检查项,空跑以退出码 2 报错,避免假通过
- 避坑清单补三条脚本类实测:ss 端口判定的字段误用、dry-run 仍落盘、验收空跑
This commit is contained in:
admin committed 2026-10-18 20:18:33 +08:00
1 parent cc86680e05
commit b2016af916
5 files changed
+655 -5

No files matched your search

+27 -2
View File
@@ -31,6 +31,30 @@ agent_created: true
## 工作流
### 快速通道:一条命令装完(推荐)
新机器(Ubuntu/Debian + 已有 nginx + 域名已解析)直接跑:
```bash
scripts/install-dual-link.sh --dry-run # 先干跑,看它打算做什么,不改任何东西
scripts/install-dual-link.sh # 交互确认后真装
scripts/install-dual-link.sh --yes \
--domain-a gao.example.com --domain-b mao.example.com --panel-domain sing.example.com
```
它一次做完:装 3x-ui → 调面板接口建两条 VLESS+WS 入站(只绑 127.0.0.1)→ 建 80 vhost 完成 ACME → 签证书 → 切 443 → 可选给面板配子域 + Basic Auth → 实测 101 并打印两条可直接导入的链接。
装完会用到的后续命令:
```bash
python3 scripts/3xui-api.py --password '<面板密码>' list # 看入站/账号/流量
python3 scripts/3xui-api.py --password '<面板密码>' add-user --email alice # 一次给两条链路开同一个人
python3 scripts/3xui-api.py --password '<面板密码>' link --inbound linkA --email alice --domain gao.example.com
python3 scripts/3xui-api.py --password '<面板密码>' del-user --email alice
```
脚本是「只接 nginx 转发」这一种架构;下列阶段一~五是把脚本内部每一步拆开讲,出问题或要偏离默认值时按阶段查。
### 阶段一 取证与选型
读 `references/01-前置取证与选型.md`。产出:链路数量与域名分配、后端选型、端口清单。
@@ -77,5 +101,6 @@ agent_created: true
- `references/03-nginx与证书.md` —— vhost 模板、acme.sh 流程、TLS 套件收紧。
- `references/04-面板与多用户.md` —— 3x-ui 层级模型、加人步骤、脚本登录的 CSRF 处理。
- `references/05-避坑清单.md` —— 实际踩过的坑与对应正向做法。
- `scripts/verify-links.sh` —— 一次验证链路、站点、面板。
- `scripts/3xui-api.py` —— 3x-ui 登录与建入站的命令行封装。
- `scripts/install-dual-link.sh` —— 一键安装:3x-ui + 两条入站 + nginx 反代 + 证书 + 面板子域 + 验收。支持 `--dry-run`。
- `scripts/verify-links.sh` —— 一次验证链路、站点、面板(**必须带 `--link` / `--site` / `--panel`,不带任何检查项会以退出码 2 报错而不是假通过**)。
- `scripts/3xui-api.py` —— 3x-ui 命令行封装:`ping` / `list` / `add` / `del-inbound` / `add-user` / `del-user` / `uuid` / `link`。