Phase 0: 容器化数据面 + CI/CD 自动部署
deploy-pangolin / deploy (push) Has been cancelled

- deploy/: Xray VLESS+REALITY (11443, 经宿主 nginx SNI 分流) + sing-box Hysteria2 (UDP 443) docker-compose
- 幂等 deploy.sh / gen-secrets.sh / print-clients.sh;受限 nginx-apply 特权脚本 + 一次性 root-setup
- .gitea/workflows/deploy.yml: NAS runner 经 SSH 远程部署到 EC2
- docs/ plan/: 设计方案与实施计划

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-05-30 11:48:21 +08:00
parent 833b8365da
commit cf96989e01
23 changed files with 1048 additions and 2 deletions
+26
View File
@@ -0,0 +1,26 @@
# Pangolin 实施计划(Plan)
> 配套设计文档:[`../docs/技术方案.md`](../docs/技术方案.md)
> 更新日期:2026-05-30 · 总原则:**先验证付费意愿,再投客户端自研**
## 阶段总览
| 阶段 | 目标 | 周期 | 文档 |
|------|------|------|------|
| **0** | 单节点 REALITY 跑通,验证线路质量 | 12 周 | [phase-0-线路验证.md](phase-0-线路验证.md) |
| **1** | 面板 + 订阅 + 限速 + 卡密收款,验证付费意愿 | 2–4 周 | [phase-1-后端面板与商业闭环.md](phase-1-后端面板与商业闭环.md) |
| **2** | 改品牌客户端 + 登录/信号灯/免费额度 | 2–4 周 | [phase-2-客户端MVP.md](phase-2-客户端MVP.md) |
| **3** | Flutter 自研 UI + 自研后端 + 广告 + 宣传站 | 持续 | [phase-3-自研与规模化.md](phase-3-自研与规模化.md) |
## 贯穿全程的横切事项
| 主题 | 文档 |
|------|------|
| 运营者安全 / 合规隔离(最高优先级) | [security-运营安全.md](security-运营安全.md) |
| 宣传页与获客 | [marketing-宣传与获客.md](marketing-宣传与获客.md) |
## 阶段门禁(Gate)
- **0 → 1**:线路稳定 ≥ 3 天,晚高峰 YouTube 1080p 流畅,REALITY 未被探测封锁。
- **1 → 2**:有 ≥ N 个真实付费用户(自定阈值),订阅/限速/收款闭环可用。
- **2 → 3**:改品牌客户端日活留存达标,客诉集中在体验而非"连不上"。
+42
View File
@@ -0,0 +1,42 @@
# 横切 —— 宣传页与获客(需求 7 + 定向人群)
---
## A. 宣传页(境外部署 + 国内直连 + 安全)
矛盾:境外站国内常被墙。务实方案 —— 不把命脉绑死单域名。
- [ ] 静态站:Astro / Next.js(SSG)纯静态
- [ ] 部署 **Cloudflare Pages**(免费、全球 CDN、自带 DDoS 防护)
- [ ] 国内直连对策:
- [ ] 多备用域名 + 自有 IP 直连镜像,主站被污染时引导切换
- [ ] 下载 / 取订阅入口可镜像分发:**GitHub Releases、Telegram 频道、网盘**
- [ ] 安全:全站 HTTPS、**无第三方追踪脚本**、不收集访客信息
- [ ] 定位:宣传页是"信任背书 + 下载入口",不是唯一流量来源
## B. 获客渠道(抗封靠去中心化)
- [ ] Telegram 群 / 频道(核心阵地)
- [ ] Twitter / X
- [ ] 酷安、V2EX、小众论坛
- [ ] YouTube 评测合作 / KOL
- [ ] **邀请码返利裂变**(老带新)
- [ ] SEO 关键词:稳定梯子、ChatGPT 怎么用、科学上网 推荐
## C. 目标人群
| 人群 | 痛点 / 卖点 |
|------|------------|
| 留学 / 外贸 / 跨境电商 | 稳定、回国线路、商务可用 |
| 程序员 / 科研 | 查资料、GitHub、稳定不掉线 |
| 追剧 / 游戏 / ChatGPT 用户 | 流媒体解锁、低延迟、AI 工具可用 |
| 数字游民 | 多地节点、跨设备 |
## D. 差异化卖点(对比 v2rayN 这类极客工具)
- **小白友好**:一键连接、自动选线、傻瓜 UI(需求 5)
- 多端统一 + 三方软件兼容(给极客留后路)
- 免费可用(看广告提额)+ 付费精品线路的清晰分层
## E. 转化漏斗
免费体验 → 晚高峰限速感知 → 推付费精品线路(不限速 / 多节点 / 精品 IP)
+45
View File
@@ -0,0 +1,45 @@
# 阶段 0 —— 单节点线路验证(1–2 周)
**目标**:用 1 台 VPS 跑通 sing-box + REALITY,确认线路质量,再谈一切。
**门禁(进入阶段1)**:线路稳定 ≥ 3 天;晚高峰 YouTube 1080p 流畅;REALITY 未被主动探测封锁。
---
## 任务清单
### T0.1 选购 VPS
- [ ] 选 1–2 个**冷门小厂** VPS(避开被重点封锁的大厂大段 IP)
- [ ] 地区候选:日本 / 香港 / 新加坡 / 美西(就近优先,先测延迟)
- [ ] 支持**加密货币付款**、可隐私注册
- [ ] 配置:1C2G 起步,带宽优先于 CPU
### T0.2 服务端部署 sing-box + REALITY
- [ ] 安装 sing-box,配置 VLESS + Vision + REALITY
- [ ] `dest` 偷用真实大站(如 `www.microsoft.com:443` / `www.apple.com:443`)
- [ ] 生成 Reality 密钥对、short_id、UUID
- [ ] 开放对应端口,关闭无关端口,禁用 root 密码登录(仅密钥)
- [ ] 备线:加一条 Hysteria2(UDP)用于晚高峰对比
### T0.3 客户端连通(先用三方软件)
- [ ] 桌面:v2rayN / Clash Verge 导入
- [ ] iOS:Shadowrocket / sing-box;Android:NekoBox / sing-box
- [ ] 确认 IP 落地正确、无 DNS 泄露(dnsleaktest)、无 WebRTC 泄露
### T0.4 线路质量验证(用 vpn-test skill)
- [ ] 出海:Cloudflare / Google / YouTube 延迟与下载速度
- [ ] 回流:B站 / 爱奇艺 / 优酷 / 百度 延迟(确认回国不绕路)
- [ ] **晚高峰(20:0023:00)** 重点复测,对比 REALITY vs Hysteria2
- [ ] 连续观察 3 天,记录是否出现 IP 被封 / 主动探测迹象
---
## 交付物
- 可复用的 sing-box 服务端配置模板(REALITY + Hysteria2)
- 一键部署脚本(幂等、参数化)
- 线路质量测试报告(vpn-test 表格 + 3 天观察记录)
## 验收标准
- [ ] 任意终端 5 分钟内导入即用
- [ ] 晚高峰 YouTube 1080p 不卡
- [ ] 3 天内 IP 未被封、未见探测封锁
- [ ] 无 DNS / WebRTC / IP 泄露
@@ -0,0 +1,56 @@
# 阶段 1 —— 后端面板与商业闭环(2–4 周)
**目标**:上成熟面板,跑通「注册 → 订阅 → 限速 → 收款」闭环,靠分享订阅 + 三方软件**验证有没有人付费**。
**门禁(进入阶段2)**:有 ≥ N 个真实付费用户(自定阈值);订阅/限速/收款全链路可用。
> 选型已定:**先用成熟面板(XBoard + Marzban),后迁自研 Go**。
---
## 任务清单
### T1.1 控制面部署(境外服务器)
- [ ] 部署 **XBoard**(商业前台:套餐 / 下单 / 支付 / 工单 / 邀请返利)
- [ ] 部署 **Marzban / Marzneshin**(节点管理:用户 / 订阅 / 流量统计 / 到期)
- [ ] PostgreSQL + Redis 就位
- [ ] 控制面后台**不暴露公网**(仅 VPN 内网 / IP 白名单 / 改端口 + 强口令 + 2FA)
- [ ] 订阅域名套 CDN / REALITY,防"取订阅"被封或被关联
### T1.2 节点接入
- [ ] 阶段0 的节点纳入面板管理
- [ ] 再加 1–2 个节点,验证多节点订阅下发
- [ ] **IP 分级**:消耗品池(免费)/ 精品池(付费)
### T1.3 套餐与额度(需求 2)
- [ ] 免费:每日 1–2 GB 或限速;预留"看广告提额"的 API 钩子(阶段3 接广告)
- [ ] 付费:月 / 季 / 年 + 流量包
- [ ] 到期与超额自动断流
### T1.4 限速(需求 3,两层)
- [ ] 节点层:sing-box/Xray 出站按用户打标 + Linux `tc`(HTB),免费用户单独限速队列
- [ ] 额度层:面板按日/月配额超额断流
- [ ] 验证免费 vs 付费速度差异符合预期
### T1.5 节点状态(需求 4)
- [ ] 控制面定时探测节点:延迟 / 丢包 / 在线 / 负载
- [ ] 暴露 `status API` 供客户端取用(为阶段2 信号灯铺路)
### T1.6 收款(需求 + 交易)
- [ ]**USDT(TRC20)** 收款
- [ ]**自动发卡(卡密)**,支付宝/微信走可轮换的中转通道
- [ ] 收款通道与运营主体**隔离**,可随时更换
- [ ] **禁用**绑定真实身份的个人支付宝/微信
---
## 交付物
- XBoard + Marzban 的 `docker-compose` 部署方案与对接步骤
- 套餐 / 限速 / 额度配置说明
- 收款通道接入说明(USDT + 发卡)
- 一份"用三方软件导入订阅"的用户上手指引
## 验收标准
- [ ] 新用户:注册 → 下单付款 → 拿订阅 → 三方软件导入即用,全程顺畅
- [ ] 免费/付费限速生效且有明显区分
- [ ] 节点状态可查
- [ ] 出现首批真实付费用户
+45
View File
@@ -0,0 +1,45 @@
# 阶段 2 —— 客户端 MVP(24 周)
**目标**:先用 **sing-box 官方 app 改品牌**,接入登录 / 节点信号灯 / 免费额度,快速出自有客户端;**不**一上来就 Flutter 自研,避免卡进度。
**门禁(进入阶段3)**:改品牌客户端日活留存达标;客诉集中在体验而非"连不上"。
> 最终客户端走 **Flutter 自研 UI**(阶段3),本阶段是过渡。
---
## 任务清单
### T2.1 选基底
- [ ] 基于 sing-box 官方 app(SFA/SFI/SFM/SFW)或 FlClash 改造(遵守各自许可证)
- [ ] 替换 logo / 配色 / 名称
### T2.2 账号与订阅打通
- [ ] 内置注册 / 登录(邮箱或设备 ID + 卡密)
- [ ] 登录后自动拉取该用户订阅,免手动粘贴
- [ ] 展示剩余额度 / 到期时间(调阶段1 面板 API)
### T2.3 小白友好核心(需求 5)
- [ ] 首屏一个**大连接按钮** + 当前节点 + 信号灯
- [ ] 默认「**智能选择**」(URLTest 自动选最优可用节点)
- [ ] 默认开 Kill-switch + 防 DNS / WebRTC 泄露
### T2.4 节点状态展示(需求 4)
- [ ] 接阶段1 的 `status API`,节点列表显示**绿/黄/红信号灯 + 延迟 ms**
### T2.5 多端打包
- [ ] Android APK(官网 + GitHub Releases + 海外 Google Play)
- [ ] iOS(海外开发者账号上架 / TestFlight / AltStore;**中国区会下架**)
- [ ] 桌面 Win/macOS(就基底支持范围)
---
## 交付物
- 改品牌的多端客户端安装包
- 客户端 ↔ 面板 API 对接说明
- 用户上手指引(截图版)
## 验收标准
- [ ] 小白用户:下载 → 登录 → 一键连接,无需任何配置
- [ ] 自动选线可用,信号灯准确
- [ ] 免费额度 / 看广告提额钩子可用(广告阶段3 接)
- [ ] 留存与客诉达门禁要求
+57
View File
@@ -0,0 +1,57 @@
# 阶段 3 —— 自研与规模化(持续)
**目标**:切到 **Flutter 自研客户端 + 自研 Go 后端**,接广告变现、多节点智能调度、上线宣传站。
---
## A. Flutter 自研客户端
### 任务
- [ ] Flutter 工程脚手架(iOS/Android/Win/macOS/Linux)
- [ ] **sing-box libbox(gomobile)桥接 PoC**(FFI / Platform Channel)
- [ ] 各端 VPN 壳:iOS NetworkExtension / Android VpnService / 桌面 TUN
- [ ] 复刻并超越阶段2 的 UI(品牌、动效、引导)
- [ ] 平滑迁移:复用阶段1/2 的订阅格式与 API,老用户无感
### 验收
- [ ] UI ~90% 代码跨端复用
- [ ] 连接稳定性、性能不低于改品牌版
---
## B. 自研 Go 后端(替换面板)
### 任务
- [ ] Go 服务:鉴权(JWT) / 订阅生成 / 订单支付 / 流量计量 / 节点调度
- [ ] PostgreSQL + Redis(限速令牌桶 / 节点状态缓存)
- [ ] 节点 Agent:流量 / 在线 / 延迟 上报控制面
- [ ] 复用面板的 DB schema 与订阅格式,灰度迁移、可回滚
### 验收
- [ ] 与面板功能对等后切流
- [ ] 多节点智能调度(按负载/延迟分配)生效
---
## C. 广告变现(免费用户)
### 任务
- [ ] 接海外激励视频广告(AdMob / Unity Ads)
- [ ] 看广告 → 客户端调 API 临时提额(对接阶段1 预留钩子)
- [ ] 风控:防刷量、频次限制
---
## D. 宣传站上线
详见 [marketing-宣传与获客.md](marketing-宣传与获客.md)。
- [ ] Astro/Next SSG + Cloudflare Pages
- [ ] 多备用域名 + GitHub/TG 分发入口
- [ ] 全站 HTTPS、无第三方追踪
---
## E. 规模化运维
- [ ] 节点 IP 轮换自动化(被封自动下线 + 补新)
- [ ] 监控告警(节点存活、被封探测、容量水位)
- [ ] 客服 / 工单 / 退款流程
+50
View File
@@ -0,0 +1,50 @@
# 横切 —— 运营者安全 / 合规隔离(最高优先级)
> ⚠️ 这是整个项目**风险最高**的部分。技术(代理/抗封锁)是合法成熟的;
> 但在中国境内运营收费翻墙服务属违法经营,**风险在运营者而非用户**,近年已有刑事/行政判例。
> 下面的隔离措施请当作和技术同等优先。
---
## A. 身份隔离(贯穿全程)
- [ ] 运营主体、服务器、域名、收款账户一律用**境外身份**
- [ ] 与国内真实身份**完全隔离**,不交叉、不复用邮箱/手机号/支付方式
- [ ] VPS 用加密货币付款;域名开隐私保护(WHOIS privacy)
- [ ] 管理操作走专用环境,不在日常个人设备/网络上做
## B. 基础设施安全
- [ ] 管理后台**不暴露公网**:仅 VPN 内网 / IP 白名单 / 改端口 + 强口令 + 2FA
- [ ] 服务器仅密钥登录,禁 root 密码,最小化开放端口
- [ ] **控制面与数据面隔离**:节点不存用户库,被抄一个节点不暴露全量用户
## C. 用户隐私(防跟踪,需求 6)
- [ ] 不收集真实身份;注册仅邮箱 / 设备 ID + 卡密
- [ ] 节点 **no-log**(不留连接日志)
- [ ] DNS 走 DoH/DoQ,防污染与泄露
- [ ] 客户端默认 Kill-switch + 防 DNS / WebRTC 泄露
## D. 抗封锁(数据面,需求 6)
- [ ] REALITY 为主(无 TLS 指纹),IP 用冷门小厂、定期轮换
- [ ] CDN/WS 中转保底(REALITY IP 被封自动切)
- [ ] Hysteria2 端口跳跃抗 UDP QoS
- [ ] 订阅域名、控制面 API 也套 CDN/REALITY
- [ ] IP 被封自动下线 + 补新(阶段3 自动化)
## E. 收款隔离(需求 + 交易)
- [ ] 主推 USDT(TRC20)+ 自动发卡
- [ ] 收款通道与运营主体隔离,可随时更换
- [ ] **禁用**绑定真实身份的个人支付宝/微信收款
---
## 红线清单(任何阶段都不得触碰)
- ❌ 用国内真实身份注册任何环节
- ❌ 管理后台裸奔公网
- ❌ 节点留连接日志
- ❌ 收款绑定个人实名账户
- ❌ 服务器/域名/支付之间产生可被关联的身份线索