fix(docs): remove iShare mention (puro 独立运营定位)

- docs.sections.getKey.note 键从 zh/en 删除
- DocsView 对应 <p class="note"> 段删掉
- 全仓再次 grep 确认无其他 ishare/iShare 引用
This commit is contained in:
mini
2026-04-23 13:08:43 +08:00
parent 291e3bfe43
commit 623a7518b2
8 changed files with 2939 additions and 3 deletions

168
LOCAL_SETUP_NOTES.md Normal file
View File

@@ -0,0 +1,168 @@
# Sub2API 本地开发环境搭建记录
> 2026-04-19 @ macOS (darwin/arm64)
## 一、环境依赖
| 项 | 版本 | 说明 |
|---|---|---|
| Go | 1.24.3(本机)→ 1.26.2auto via GOTOOLCHAIN | go.mod 要求 1.26.2,靠 Go 1.21+ 的 GOTOOLCHAIN 机制自动下载 |
| Node | v24.13.0 | ≥18 即可 |
| pnpm | v10.33.0 | 现装:`npm install -g pnpm` |
| Docker | OrbStack | 已跑 mysql8@3306,端口冲突规避见下 |
| 端口占用 | 8080 / 5433 / 6380 均空闲 | 5432/6379 留给可能的其他 PG/Redis |
## 二、部署步骤(实际执行)
### 1. 拉源码
```bash
git clone https://github.com/Wei-Shaw/sub2api.git /Users/mini/Work/dev/sub2api
```
### 2. 起依赖容器(非默认端口)
```bash
docker run -d --name sub2api-pg \
-e POSTGRES_PASSWORD=devpass -e POSTGRES_DB=sub2api \
-p 5433:5432 postgres:15
docker run -d --name sub2api-redis \
-p 6380:6379 redis:7
```
### 3. 安装 pnpm首次
```bash
npm install -g pnpm
```
### 4. 构建前端
```bash
cd /Users/mini/Work/dev/sub2api/frontend
pnpm install # ~9 秒
pnpm run build # ~8 秒,产物输出到 ../backend/internal/web/dist/
```
### 5. 构建后端(⚠️ 必带 `-tags embed`
```bash
cd /Users/mini/Work/dev/sub2api/backend
go build -tags embed -o sub2api ./cmd/server
# 产物105MB Mach-O 64-bit arm64
```
### 6. 生成 config.yaml
```bash
cp /Users/mini/Work/dev/sub2api/deploy/config.example.yaml \
/Users/mini/Work/dev/sub2api/backend/config.yaml
```
修改四处(见下方问题点 Issue #1 说明 sslmode
| 字段 | 原值 | 改为 |
|---|---|---|
| `database.port` | 5432 | **5433** |
| `database.password` | `"your_secure_password_here"` | `"devpass"` |
| `database.sslmode` | `"prefer"` | **`"disable"`** |
| `redis.port` | 6379 | **6380** |
| `jwt.secret` | `"change-this-..."` | `openssl rand -hex 32` 产出的 64 位 hex |
### 7. 启动 + 验证
```bash
cd /Users/mini/Work/dev/sub2api/backend
nohup ./sub2api > /tmp/sub2api.log 2>&1 &
# 等 5-10 秒让服务完成 pricing 数据下载
curl -si http://localhost:8080 | head
# 期望HTTP/1.1 200 OKHTML 含 <title>Sub2API - AI API Gateway</title>
```
---
## 三、遇到的问题与解法
### Issue #1 — `sslmode: "prefer"` 启动失败
**现象**:后端启动立即退出,日志:
```
Failed to initialize application: acquire migrations lock:
pq: unsupported sslmode "prefer"; only "require" (default),
"verify-full", "verify-ca", and "disable" supported
```
**根因**`config.example.yaml` 默认的 `sslmode: "prefer"` 是 libpqC 驱动的模式Go 的 `lib/pq` 不支持。
**解法**:本地 Docker Postgres 没配 SSL改成 `disable`
```yaml
database:
sslmode: "disable"
```
生产若走带 SSL 的 PG`require``verify-full`
---
### Issue #2 — go.mod 要求 Go 1.26.2,本机只有 1.24.3
**现象**:首次 `go build` 触发:
```
go: downloading go1.26.2 (darwin/arm64)
```
**根因**`backend/go.mod` 第一行 `go 1.26.2` 写死。
**解法****无需手动升级 Go**。Go 1.21+ 的 GOTOOLCHAIN 机制会自动下载指定版本并透明切换。首次 build 比较慢(下载 toolchain + 全部依赖),后续会缓存。
---
### Issue #3 — frontend 构建产物路径是相对路径到 backend
**现象**`pnpm run build` 的日志显示产物写到 `../backend/internal/web/dist/`
**说明****这是预期行为**。Vite 配置把输出指向 backend 的 embed 目录,配合 `go build -tags embed` 把 dist 打进 Go 二进制。所以:
- 每次改前端代码都要重新 `pnpm run build` 然后 `go build -tags embed`
- 如果 `go build` 时忘了 `-tags embed`,后端启动后访问 `/` 会 404
---
### Issue #4 — 日志文件 `/app/data/logs/sub2api.log` 写入失败
**现象**:启动日志里有 WARN
```
日志文件输出初始化失败,降级为仅标准输出
path=/app/data/logs/sub2api.log err=mkdir /app: read-only file system
```
**根因**:默认配置指向容器内路径 `/app/data/logs/`,本地裸跑在 macOS 上 `/app` 不可写。
**影响**:无功能影响,只是降级到 stdout。我们用 `nohup ./sub2api > /tmp/sub2api.log 2>&1 &` 已经把 stdout 重定向了,日志照样完整。
**若要消除 WARN**:修改 config 里 `logging.file_path`(或等同字段)指向本地可写路径,如 `/tmp/sub2api/logs/sub2api.log`,并 `mkdir -p` 目录。
---
## 四、当前状态
```
Backend PID: 26921
HTTP: 200 @ http://localhost:8080
页面: Sub2API - AI API GatewaySetup Wizard 入口)
Pricing: 已下载 177 个模型价格
Containers: sub2api-pg (Up), sub2api-redis (Up)
```
---
## 五、下次重启命令
```bash
# 启动依赖(容器如果 stopped
docker start sub2api-pg sub2api-redis
# 启动后端
cd /Users/mini/Work/dev/sub2api/backend
nohup ./sub2api > /tmp/sub2api.log 2>&1 &
# 停止
pkill -f "/Users/mini/Work/dev/sub2api/backend/sub2api"
docker stop sub2api-pg sub2api-redis
```
## 六、清理重来
```bash
pkill -f "/Users/mini/Work/dev/sub2api/backend/sub2api"
docker rm -f sub2api-pg sub2api-redis
rm -rf /Users/mini/Work/dev/sub2api
```