Files
OpenFlare/docs/deployment.md
T

208 lines
4.1 KiB
Markdown

# ATSFlare 部署说明
本文档仅保留当前可用基线的最小部署方式,用于第三版开发前后的本地部署、联调与回归验证。
---
## 1. 前置条件
### 1.1 Server
* Go 1.18+
* Node.js 18+
* 可写 SQLite 文件目录
### 1.2 Agent
* Go 1.18+
* 对 Agent 数据目录有写权限
* 若使用独立 Nginx 模式:可执行 `nginx -t` 与 `nginx -s reload`
* 若使用 Docker 模式:具备 Docker 执行权限
---
## 2. Server 启动
### 2.1 构建前端
```bash
cd atsf_server/web
npm install
npm run build
```
### 2.2 启动服务
```bash
cd atsf_server
export SESSION_SECRET='replace-with-random-string'
export SQLITE_PATH='./atsflare.db'
go run .
```
说明:
* 默认不依赖全局 `AGENT_TOKEN`
* 节点接入凭证由数据库维护:节点专属 `agent_token` + 全局 `discovery_token`
* 默认监听端口为 `3000`
### 2.3 首次登录
访问 `http://localhost:3000`
默认账号:
* 用户名:`root`
* 密码:`123456`
---
## 3. Agent 配置
当前支持两种接入模式。
### 3.1 节点专属 `agent_token`
```json
{
"server_url": "http://127.0.0.1:3000",
"agent_token": "replace-with-node-auth-token",
"data_dir": "./data",
"nginx_container_name": "atsflare-nginx",
"nginx_docker_image": "nginx:stable-alpine",
"heartbeat_interval": 30000,
"sync_interval": 30000,
"request_timeout": 10000
}
```
### 3.2 全局 `discovery_token`
```json
{
"server_url": "http://127.0.0.1:3000",
"discovery_token": "replace-with-global-discovery-token",
"data_dir": "./data",
"nginx_container_name": "atsflare-nginx",
"nginx_docker_image": "nginx:stable-alpine",
"heartbeat_interval": 30000,
"sync_interval": 30000,
"request_timeout": 10000
}
```
说明:
* `agent_version` 由 Agent 代码内常量提供,升级时同步修改代码
* `nginx_version` 由 Agent 启动时执行命令自动探测
* 时间字段使用毫秒整数
* `agent_token` 与 `discovery_token` 至少填写一个
* 若 `agent_token` 为空且 `discovery_token` 存在,Agent 会自动注册并写回新的专属 `agent_token`
* `node_name` 与 `node_ip` 可省略,未填写时自动探测
* 未配置 `nginx_path` 时,默认使用 Docker Nginx 容器
---
## 4. Agent 启动
### 4.1 直接运行
```bash
cd atsf_agent
go run ./cmd/agent -config /path/to/agent.json
```
### 4.2 编译后二进制运行
```bash
cd atsf_agent
go build -o atsflare-agent ./cmd/agent
./atsflare-agent -config /path/to/agent.json
```
---
## 5. 最小联调步骤
### 5.1 准备节点接入
二选一:
* 在管理端预创建节点并复制专属 `agent_token`
* 在管理端查看全局 `discovery_token` 并写入节点配置
### 5.2 创建规则并发布
1. 在管理端新增一条启用中的反代规则
2. 在发布前查看预览或变更摘要
3. 生成并激活新版本
### 5.3 验证 Agent 应用
预期行为:
1. Agent 完成心跳与同步
2. 自动注册模式下完成 Token 置换
3. 拉取激活版本
4. 写入路由配置与必要证书文件
5. 执行 `nginx -t`
6. 执行 `nginx -s reload`
7. 上报应用结果
### 5.4 验证管理端状态
管理端应能看到:
* 节点在线状态
* 节点当前版本
* 最近一次应用结果
* 自动注册后节点已绑定专属 `agent_token`
### 5.5 验证失败回滚
人为制造 `nginx -t` 失败后再次发布,预期:
* Agent 回滚旧配置
* 节点 `last_error` 更新
* 应用记录中出现失败记录
---
## 6. 常用验证命令
### 6.1 Server
```bash
cd atsf_server
GOCACHE=/tmp/atsflare-go-cache go test ./...
```
### 6.2 Agent
```bash
cd atsf_agent
GOCACHE=/tmp/atsflare-go-cache go test ./...
```
### 6.3 前端
```bash
cd atsf_server/web
npm run build
```
---
## 7. 当前已知限制
* 暂未内置 systemd unit 文件
* 暂未提供一键部署脚本
* Docker 模式仍是 MVP 级封装
* 联调以手工步骤为主
---
## 8. 文档维护要求
当部署方式、配置字段、节点接入方式或联调流程变化时,同步更新本文档。