From 1a47dee63d176c2654c94faea1c63f6a4390adf1 Mon Sep 17 00:00:00 2001 From: "Logan.Li" Date: Thu, 15 Oct 2026 17:53:15 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E9=83=A8=E7=BD=B2=E4=B8=8E=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=EF=BC=88=E4=B8=A4=E5=A5=97=E7=BA=BF=E4=B8=8A=E6=8B=93?= =?UTF-8?q?=E6=89=91=EF=BC=8C=E4=B8=8D=E5=90=AB=E8=B4=A6=E5=AF=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 记录 l123.91ai.io 反代与 licence.rlwj.cn 本机部署口径; 远程改为 gitea.91ai.io/rlwj-lab/opsx-licence。 --- docs/部署与环境.md | 121 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 docs/部署与环境.md diff --git a/docs/部署与环境.md b/docs/部署与环境.md new file mode 100644 index 0000000..97e15f6 --- /dev/null +++ b/docs/部署与环境.md @@ -0,0 +1,121 @@ +# opsx-licence 部署与环境 + +> 本文汇总本机仓库可确认信息 + 业务侧口述的线上部署事实。 +> **带「待远程核实」的条目:本轮未 SSH、未登录管理后台,仅按口述与仓内既有说明记录。** +> **禁止**:把管理后台密码、JWT、Waffo 私钥等写入本文件或提交仓库。 + +## 用途(一句话) + +通用许可证(License)管理服务器:为 Web / PC / 移动等多端产品提供在线/离线授权、座位激活、订单与 Waffo 支付对账、管理后台。 + +线上示例(README):`https://l123.91ai.io/` + +## 本机仓库 + +| 项 | 值 | +|----|-----| +| 路径 | `/Users/logan/devops/opsx-licence` | +| Remote | `https://gitea.91ai.io/rlwj-lab/opsx-licence.git`(origin;原 Gitee `opsx-tools/opsx-licence` 已弃用为主远程) | +| 默认分支 | `master`(与 `origin/master` 对齐;本轮摸仓时工作区干净) | + +## 技术栈(本机确认) + +| 层 | 技术 | +|----|------| +| 后端 | Go(`go.mod` 标 1.25)+ Gin + GORM;默认 SQLite,可 MySQL / PostgreSQL | +| 前端 | Vue 3.4 + Vite + Element Plus + ECharts + Pinia | +| 打包 | 前端 `dist` 经 `//go:embed` 打进单二进制;Docker 多阶段构建 | +| 认证 | JWT + bcrypt;管理端单 Admin | +| 默认服务端口 | 后端 / 生产单体 **9001**;开发前端 Vite **5181** | + +详细授权模型见 [licensing-model.md](./licensing-model.md);支付闭环见 [waffo-integration.md](./waffo-integration.md)。开发约定见仓库根目录 `AGENTS.md`。 + +## 本地如何跑(本机确认) + +```bash +cd /Users/logan/devops/opsx-licence +cp .env.example .env # 按需改 JWT_SECRET 等;勿把真实密钥提交仓库 +./run.sh start # 或 make dev +# 开发:前端 http://localhost:5181 ,后端 http://localhost:9001 +# 默认管理账号见 README / AGENTS.md(生产必须改密;密码勿写入文档) +``` + +其它常用: + +| 命令 | 说明 | +|------|------| +| `./run.sh stop` / `status` / `restart` | 停 / 查 / 重启开发进程 | +| `./run.sh build` 后 `./run.sh binary start` | 嵌入前端的单二进制 | +| `./run.sh docker up`(或 `make docker-up`) | Docker Compose;宿主机映射 `${HOST_PORT:-9001}` → 容器 9001 | +| `make install` | `go mod download` + `npm install` | + +健康检查(Docker):`GET http://127.0.0.1:9001/readyz` + +## 关键配置路径(本机确认) + +| 路径 | 作用 | +|------|------| +| 仓库根 `.env` / `.env.example` | 后端主配置模板与本地覆盖(`PORT`、`GIN_MODE`、`JWT_SECRET`、DB、Waffo、CORS 等) | +| `frontend/.env.development` | 开发:`VITE_API_BASE_URL=/api`(经 Vite 代理) | +| `frontend/.env.production` | 生产构建:同源相对路径 `/api` | +| `backend/config/config.go` | 读环境变量、默认值(含 CORS 本地 5181) | +| `backend/router/router.go` | `/api` 路由注册 | +| `docker-compose.yml` | 单容器 `opsx-licence` + SQLite 备份 sidecar;数据卷 `licence_data` → `/data/db.sqlite3` | +| `Dockerfile` | Node 打前端 → Go embed → debian 运行时,`PORT=9001` | +| `run.sh` / `Makefile` | 本地启停与构建入口 | +| `docs/` | 授权模型、Waffo、本文 | + +客户端公开 API 前缀:`/api/v1`(激活/心跳/checkout/webhook 等,见 README)。 +管理端登录接口:`POST /api/auth/login`(限流 + 锁定,勿频繁打)。 + +## 线上部署事实(待远程核实) + +以下为业务侧口述;**本轮未登录服务器核实 nginx / 进程 / 目录。** + +### `l123.91ai.io`(待远程核实) + +| 项 | 口述内容 | +|----|----------| +| 入口 | 公网域名 `l123.91ai.io` | +| 反代 | **nginx** 反代到内网 **`192.168.14.7:9001`** | +| 应用代码路径 | **`/srv/opsx-licence`** | +| 应用端口 | 与仓内默认一致时为 **9001**(待在应用机确认容器/进程绑定) | + +仓内 `AGENTS.md`「服务器环境」另记:香港机 nginx 反代该域名 → `http://192.168.14.7:9001`,内网应用机容器绑 `0.0.0.0:9001`。与口述方向一致,**仍待远程再核一次**。 + +Webhook / 支付回跳示例(`.env.example`,非本次核实): +`https://l123.91ai.io/api/v1/webhooks/waffo`、`SUCCESS_URL=https://l123.91ai.io/api/v1/purchase/success` + +### `licence.rlwj.cn`(国内 · 待远程核实) + +| 项 | 口述内容 | +|----|----------| +| 入口 | 公网域名 `licence.rlwj.cn`(国内) | +| 部署形态 | **nginx 与后端服务同机** | +| 应用代码路径 | **`/srv/opsx-licence`** | +| 应用端口 | 预期容器/进程 **9001**,常由本机 nginx 反代对外 HTTPS(待远程确认监听与 `proxy_pass`) | + +仓内 `AGENTS.md` 另记该域名为国内应用服务器角色、容器绑 `127.0.0.1:9001`。与「同机 nginx+服务」口述一致,**仍待远程再核一次**。 + +### 两套环境共性(待远程核实 + 仓内约定) + +- 部署路径统一口述为 **`/srv/opsx-licence`** +- 管理后台两套地址:`https://l123.91ai.io` 与 `https://licence.rlwj.cn` +- 两套环境的 `JWT_SECRET` 等应各自独立(见 `AGENTS.md`);勿混用 token +- 密码与密钥:**不写入仓库**;向负责人索取或查密码管理器;泄露/遗忘时在服务器侧重置 + +## 本轮未做 / 仍缺 + +- [ ] SSH 登录应用机 / 反代机,核对 nginx `server_name`、`proxy_pass`、证书 +- [ ] 核对 `/srv/opsx-licence` 是否存在、与本机仓是否同版本、Docker Compose / 单二进制哪种在跑 +- [ ] 核对容器端口绑定(`127.0.0.1:9001` vs `0.0.0.0:9001`)与健康检查 +- [ ] 在 1:1(非群聊)用管理员账号验后台(**勿在群内贴密码、勿把密码写入本文件**) +- [ ] 确认两套环境 Waffo / webhook 公网 URL 是否都指向对应域名 + +远程摸机请在与全栈工程师的 **1:1** 进行(群聊不便做登录类操作)。 + +## 修订记录 + +| 日期 | 说明 | +|------|------| +| 2026-10-15 | 本机摸仓新建本文;写入用户口述两套部署并标「待远程核实」;补用途、本地跑法、关键配置路径。未 commit / 未 push。 |