mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-02 06:56:36 +08:00
merge: replace legacy openflare-server with Wavelet rename
This commit is contained in:
@@ -18,6 +18,7 @@ sidebar: false
|
||||
|
||||
### 移除
|
||||
|
||||
- 删除旧版 `openflare-server/` 单体实现(含 `web/` 前端);仓库内 `openflare-server/` 现指迁移后的 Wavelet 统一控制面。
|
||||
- 移除 Wavelet About 界面相关代码:删除 `AboutService` 与 `GET /api/v1/d/about` 接口(页面从未实现,属冗余遗留)。
|
||||
- 移除 Wavelet 中从旧系统迁移但未实装的全局 API / Web / 敏感接口限流选项(`GlobalApiRateLimit*`、`GlobalWebRateLimit*`、`CriticalRateLimit*`)及相关校验与数据库种子。
|
||||
- 移除 `internal/apps/openflare/legacy/` 控制台兼容层、`compat/auth.go`(`OpenFlare-Token` JWT 桥接)及前端 `legacy-base.service.ts`;`openflare-server/web` 不再能对接当前 Wavelet 后端管理 API。
|
||||
@@ -72,6 +73,7 @@ sidebar: false
|
||||
|
||||
### 变更
|
||||
|
||||
- 将 `Wavelet/` 目录重命名为 `openflare-server/`,完成 OpenFlare 后端与前端迁移后的仓库结构收敛;同步更新 Server Docker/Release 工作流与部署文档中的路径(`frontend/`、`docker/Dockerfile`)。
|
||||
- 补齐 OpenFlare Swagger 文档:新增 Agent/Relay/Tunnel 协议端点(13 个 `/api/v1/agent|relay|tunnel/*`)注解与安全定义(`AgentTokenAuth`、`TunnelTokenAuth`);管理端注解将权限不足响应由 403 统一为 404。
|
||||
- Wavelet API 路径统一:管理端由 `/api/v1/openflare/*` 调整为 `/api/v1/d/*`;Agent/Relay/Tunnel 协议路由分别迁移至 `/api/v1/agent/*`、`/api/v1/relay/*`、`/api/v1/tunnel/*`(原 `/api/flared/*`)。同步更新 Wavelet 前端服务层与 `openflare-agent`、`openflare-relay`、`openflared` 客户端连接端点。
|
||||
- Agent/Relay/Tunnel 协议 API 响应格式对齐 Wavelet `{error_msg, data}`:服务端移除 `compat` 包,业务错误改为 HTTP 4xx + `error_msg`;同步更新 `openflare-agent`、`openflare-relay`、`openflared` HTTP 客户端解析逻辑。
|
||||
|
||||
+15
-57
@@ -4,8 +4,6 @@
|
||||
|
||||
OpenFlare Server 是 Gin + GORM 单体控制面,负责管理端 UI、管理 API、Agent API、配置渲染、版本发布、数据存储与聚合查询。
|
||||
|
||||
> **迁移说明**:后端业务域正在迁入 [Wavelet](../plan/20260618-openflare-wavelet-backend-migration.md)。阶段一通过 Wavelet 的 `/api/*` legacy 兼容层联调旧前端;下文「Wavelet 后端」一节描述新后端的启动方式。
|
||||
|
||||
## 前置条件
|
||||
|
||||
| 项目 | 要求 |
|
||||
@@ -15,17 +13,17 @@ OpenFlare Server 是 Gin + GORM 单体控制面,负责管理端 UI、管理 AP
|
||||
| pnpm | 推荐通过 `corepack enable` 使用项目声明的 pnpm |
|
||||
| 数据库 | SQLite 文件目录可写,或可访问的 PostgreSQL 实例 |
|
||||
|
||||
生产环境必须显式配置 `JWT_SECRET`,并优先使用 PostgreSQL。
|
||||
生产环境必须配置 `session_secret`(或 `SESSION_SECRET`),并优先使用 PostgreSQL 与 Redis。
|
||||
|
||||
## 构建管理端前端
|
||||
|
||||
Go Server 会托管 `openflare-server/web/build` 中的静态产物。源码启动前先构建前端:
|
||||
Go Server 会嵌入 `openflare-server/frontend/out` 静态产物。源码启动前先构建前端:
|
||||
|
||||
```bash
|
||||
cd openflare-server/web
|
||||
cd openflare-server/frontend
|
||||
corepack enable
|
||||
pnpm install
|
||||
pnpm build
|
||||
pnpm build:embed
|
||||
```
|
||||
|
||||
常用前端检查:
|
||||
@@ -40,10 +38,9 @@ pnpm test
|
||||
|
||||
```bash
|
||||
cd openflare-server
|
||||
export JWT_SECRET='replace-with-a-long-random-string'
|
||||
export SQLITE_PATH='./openflare.db'
|
||||
export LOG_LEVEL='info'
|
||||
go run .
|
||||
cp config.example.yaml config.yaml
|
||||
# 编辑 config.yaml:设置 session_secret,并将 database.enabled 设为 false
|
||||
go run . all
|
||||
```
|
||||
|
||||
默认监听 `3000` 端口,访问:
|
||||
@@ -56,15 +53,12 @@ http://localhost:3000
|
||||
|
||||
```bash
|
||||
cd openflare-server
|
||||
export JWT_SECRET='replace-with-a-long-random-string'
|
||||
export DSN='postgres://openflare:secret@127.0.0.1:5432/openflare?sslmode=disable'
|
||||
export LOG_LEVEL='info'
|
||||
go run .
|
||||
cp config.example.yaml config.yaml
|
||||
# 编辑 config.yaml:设置 session_secret、database.* 与 redis.*
|
||||
go run . all
|
||||
```
|
||||
|
||||
`DSN` 设置后优先于 SQLite。`DSN` 与兼容旧命名的 `SQL_DSN` 同时存在时,优先使用 `DSN`。
|
||||
|
||||
如果目标 PostgreSQL 数据库为空且本地 `SQLITE_PATH` 文件存在,Server 启动阶段会尝试把 SQLite 数据迁移到 PostgreSQL,并在日志中输出迁移进度。
|
||||
生产环境推荐分进程部署:`go run . api`、`go run . worker`、`go run . scheduler`。
|
||||
|
||||
## 使用 Docker 启动
|
||||
|
||||
@@ -173,13 +167,9 @@ go run . --port 3000 --log-dir ./logs
|
||||
|
||||
首次登录后请立即修改默认密码。
|
||||
|
||||
## Wavelet 后端(迁移中)
|
||||
## 配置要点
|
||||
|
||||
阶段一将 OpenFlare 业务 API 运行在 Wavelet 框架内(`Wavelet/internal/apps/openflare/`),默认监听 `:3000`,与旧 Server 端口一致。旧前端仍使用 `openflare-server/web/build` 静态产物;API 请求指向 Wavelet 的 `/api/*` 兼容路由。
|
||||
|
||||
### 配置要点
|
||||
|
||||
复制 `Wavelet/config.example.yaml` 为 `config.yaml`,或使用 `Wavelet/.env.example` 中的环境变量。关键默认值:
|
||||
复制 `openflare-server/config.example.yaml` 为 `config.yaml`,或使用 `openflare-server/.env.example` 中的环境变量。关键默认值:
|
||||
|
||||
| 项 | 值 |
|
||||
| --- | --- |
|
||||
@@ -189,46 +179,14 @@ go run . --port 3000 --log-dir ./logs
|
||||
| `application_name` | `openflare-server` |
|
||||
| Redis 键前缀 | `openflare:` |
|
||||
|
||||
生产环境需启用 PostgreSQL(`database.enabled: true` 或 `DB_ENABLED=true`),并配置 Redis。
|
||||
|
||||
### 启动命令
|
||||
|
||||
```bash
|
||||
cd Wavelet
|
||||
|
||||
# 开发:API + Worker + Scheduler 合一
|
||||
go run . all
|
||||
|
||||
# 生产:分进程部署
|
||||
go run . api # HTTP API + OpenFlare 定时任务
|
||||
go run . worker # Wavelet Asynq 异步任务
|
||||
go run . scheduler # Wavelet Asynq 定时触发
|
||||
```
|
||||
|
||||
也可使用 `docker compose up`(见 `Wavelet/docker-compose.yml`)拉起 PostgreSQL、Redis 与 Wavelet 服务。
|
||||
|
||||
### OpenFlare 定时任务
|
||||
|
||||
OpenFlare 业务定时任务集中在 `internal/apps/openflare/tasks/`,通过 `robfig/cron` 在 **API 进程**内运行(非 Asynq):
|
||||
|
||||
| 任务 | 调度 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| 可观测数据自动清理 | 每日 03:00 | 受 Option `DatabaseAutoCleanupEnabled` 控制 |
|
||||
| WAF IP 组同步 | 每 5 分钟 | 向在线 Agent 下发 IP 组变更 |
|
||||
| UptimeKuma 同步 | 每分钟检查间隔 | 按 Option 配置的间隔触发 |
|
||||
| SSL 自动续期 | 每日 00:00 | ACME 证书续期 |
|
||||
|
||||
API 启动后日志中应出现 `[OpenFlareTasks] registered cron job` 行。`worker` 与 `scheduler` 进程不运行上述 cron。
|
||||
也可使用 `docker compose up`(见 `openflare-server/docker-compose.yml`)拉起 PostgreSQL、Redis 与 Server。
|
||||
|
||||
### 验证
|
||||
|
||||
```bash
|
||||
cd Wavelet
|
||||
cd openflare-server
|
||||
go build ./...
|
||||
go test ./internal/apps/openflare/... -count=1
|
||||
|
||||
# 健康检查
|
||||
curl http://127.0.0.1:3000/api/status
|
||||
```
|
||||
|
||||
更多迁移进度与接手说明见 [AI 接手文档](../plan/handover-openflare-backend-migration.md)。
|
||||
|
||||
@@ -67,7 +67,7 @@ OpenFlare 适合需要统一管理多台 OpenResty 代理节点的团队,具
|
||||
| 路径 | 职责 |
|
||||
| ---------------------- | ---------------------------------------------------- |
|
||||
| `openflare-server` | Gin + GORM + SQLite/PostgreSQL 单体控制面 |
|
||||
| `openflare-server/web` | Next.js 15 App Router 管理端前端,由 Go Server 托管 |
|
||||
| `openflare-server/frontend` | Next.js App Router 管理端前端,由 Go Server 嵌入托管 |
|
||||
| `pkg` | 跨组件复用的协议类型与通用工具包 |
|
||||
| `openflare-agent` | Go 单体 Agent,运行在节点侧 |
|
||||
| `openflare-relay` | Tunnel 中继代理,运行在公网边缘管理 frps 进程 |
|
||||
|
||||
@@ -8,10 +8,8 @@
|
||||
|
||||
```bash
|
||||
cd openflare-server
|
||||
export JWT_SECRET='replace-with-random-string'
|
||||
export SQLITE_PATH='./openflare.db'
|
||||
export LOG_LEVEL='info'
|
||||
go run .
|
||||
cp config.example.yaml config.yaml
|
||||
go run . all
|
||||
```
|
||||
|
||||
指定监听端口与日志目录:
|
||||
@@ -32,7 +30,7 @@ GOCACHE=/tmp/openflare-go-cache go test ./...
|
||||
开发:
|
||||
|
||||
```bash
|
||||
cd openflare-server/web
|
||||
cd openflare-server/frontend
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
@@ -40,14 +38,14 @@ pnpm dev
|
||||
构建静态产物:
|
||||
|
||||
```bash
|
||||
cd openflare-server/web
|
||||
pnpm build
|
||||
cd openflare-server/frontend
|
||||
pnpm build:embed
|
||||
```
|
||||
|
||||
检查:
|
||||
|
||||
```bash
|
||||
cd openflare-server/web
|
||||
cd openflare-server/frontend
|
||||
pnpm lint
|
||||
pnpm typecheck
|
||||
pnpm test
|
||||
@@ -146,5 +144,5 @@ pnpm dev
|
||||
|
||||
```bash
|
||||
cd docs
|
||||
pnpm build
|
||||
pnpm build:embed
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user