mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 14:06:36 +08:00
144 lines
3.8 KiB
Markdown
144 lines
3.8 KiB
Markdown
# 启动 Server
|
||
|
||
你会学到:如何从源码构建管理端前端、启动 OpenFlare Server、选择 SQLite 或 PostgreSQL,并访问 Swagger。
|
||
|
||
OpenFlare Server 是 Gin + GORM 单体控制面,负责管理端 UI、管理 API、Agent API、配置渲染、版本发布、数据存储与聚合查询。
|
||
|
||
## 前置条件
|
||
|
||
| 项目 | 要求 |
|
||
| --- | --- |
|
||
| Go | `1.25+` |
|
||
| Node.js | `18+` |
|
||
| pnpm | 推荐通过 `corepack enable` 使用项目声明的 pnpm |
|
||
| 数据库 | SQLite 文件目录可写,或可访问的 PostgreSQL 实例 |
|
||
|
||
生产环境必须配置 `app.session_secret`(或 `APP_SESSION_SECRET`),并优先使用 PostgreSQL、Redis 与 ClickHouse。
|
||
|
||
## 构建管理端前端
|
||
|
||
Go Server 会嵌入 `frontend/out` 静态产物(构建后复制到 `internal/router/root/dist`)。源码启动前先构建前端:
|
||
|
||
```bash
|
||
cd frontend
|
||
corepack enable
|
||
pnpm install
|
||
pnpm build:embed
|
||
```
|
||
|
||
常用前端检查:
|
||
|
||
```bash
|
||
pnpm lint
|
||
pnpm typecheck
|
||
pnpm test
|
||
```
|
||
|
||
## 使用 SQLite 启动
|
||
|
||
```bash
|
||
cp config.example.yaml config.yaml
|
||
# 编辑 config.yaml:设置 session_secret,并将 database.enabled 设为 false
|
||
go run main.go all
|
||
```
|
||
|
||
默认监听 `3000` 端口,访问:
|
||
|
||
```text
|
||
http://localhost:3000
|
||
```
|
||
|
||
## 使用 PostgreSQL 启动
|
||
|
||
```bash
|
||
cp config.example.yaml config.yaml
|
||
# 编辑 config.yaml:设置 session_secret、database.* 与 redis.*
|
||
go run main.go all
|
||
```
|
||
|
||
生产环境推荐分进程部署:`go run main.go api`、`go run main.go worker`、`go run main.go scheduler`。
|
||
|
||
## 使用 Docker 启动
|
||
|
||
使用 Docker 部署可以免去本地配置 Go 与 Node.js 前端构建环境的麻烦。OpenFlare 官方提供了完整的 Dockerfile 与 Compose 配置,支持独立容器启动及多服务联动部署。
|
||
|
||
### 1. 使用 Docker Run 极速启动(以 SQLite 为例)
|
||
|
||
确保当前目录下已创建用于持久化数据库和日志的数据卷目录。运行以下命令启动 Server:
|
||
|
||
```bash
|
||
# 创建本地挂载目录
|
||
mkdir -p ./openflare-data
|
||
|
||
# 启动容器
|
||
docker run -d \
|
||
--name openflare-server \
|
||
-p 3000:3000 \
|
||
-v $(pwd)/openflare-data:/data \
|
||
-e APP_SESSION_SECRET='replace-with-a-long-random-string' \
|
||
-e DB_ENABLED=false \
|
||
-e SQLITE_PATH='/data/openflare.db' \
|
||
-e LOG_LEVEL='info' \
|
||
ghcr.io/rain-kl/openflare:latest
|
||
```
|
||
|
||
启动参数说明:
|
||
* **`-p 3000:3000`**:映射宿主机 `3000` 端口到容器内 `3000` 端口。
|
||
* **`-v $(pwd)/openflare-data:/data`**:挂载本地目录到容器的 `/data`,确保数据库文件在重启或重建容器时不丢失。
|
||
* **`APP_SESSION_SECRET`**:Session Cookie 签名密钥,生产环境必须配置。
|
||
|
||
---
|
||
|
||
### 2. 使用 Docker Compose 一键启动
|
||
|
||
推荐在生产环境使用仓库根目录的 `docker-compose.yaml`,自动编排 PostgreSQL、Redis、ClickHouse 与 Jaeger:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
docker compose up -d
|
||
```
|
||
|
||
## 命令行参数
|
||
|
||
```bash
|
||
go run main.go api # 仅 API
|
||
go run main.go worker # 仅 Worker
|
||
go run main.go scheduler # 仅 Scheduler
|
||
go run main.go all # 融合模式(默认)
|
||
```
|
||
|
||
监听地址与日志由 `config.yaml`(`app.addr`、`log.*`)或 `APP_ADDR`、`LOG_*` 环境变量控制。
|
||
|
||
## 首次登录
|
||
|
||
默认账号:
|
||
|
||
| 用户名 | 密码 |
|
||
| --- | --- |
|
||
| `root` | `123456` |
|
||
|
||
首次登录后请立即修改默认密码。
|
||
|
||
## 配置要点
|
||
|
||
复制 `config.example.yaml` 为 `config.yaml`,或使用 `.env.example` 中的环境变量。关键默认值:
|
||
|
||
| 项 | 值 |
|
||
| --- | --- |
|
||
| 监听地址 | `:3000` |
|
||
| PostgreSQL 库名 | `openflare` |
|
||
| SQLite 后备 | `openflare.db` |
|
||
| `application_name` | `openflare-server` |
|
||
| Redis 键前缀 | `openflare:` |
|
||
|
||
也可使用 `docker compose up`(见根目录 `docker-compose.yaml`)拉起完整依赖栈。
|
||
|
||
### 验证
|
||
|
||
```bash
|
||
go build ./...
|
||
go test ./internal/apps/openflare/... -count=1
|
||
|
||
curl http://127.0.0.1:3000/api/v1/d/status
|
||
```
|