# OpenAaaS Server
中文 | English
OpenAaaS 的 HTTP 服务端,负责接收 Client 任务、调度给 Agent 执行,并管理任务生命周期。
## 编译安装
需要安装 Rust 工具链(1.85+):
```bash
cd server
cargo build --release
```
编译产物为 `target/release/open-aaas-server`。
## 命令用法
```bash
open-aaas-server [OPTIONS]
```
### 全局选项
| 选项 | 说明 |
|------|------|
| `--config ` | 指定配置文件路径,默认读取当前目录的 `config.toml` |
### 子命令
| 命令 | 说明 |
|------|------|
| `run` | 前台运行服务器 |
| `run-detached` | 后台运行服务器 |
| `stop` | 停止后台服务器 |
| `status` | 查看服务器状态 |
## 首次启动
首次执行 `run` 时,若当前目录没有 `config.toml`,会进入交互式配置:
```bash
$ ./open-aaas-server run
Data directory [./data]: # 回车确认或输入新路径
Admin API Key []: # 回车随机生成,或输入自定义值
```
服务端会自动完成以下初始化:
1. 创建数据目录(默认 `./data`)
2. 写入 SQLite 数据库路径:`{data_dir}/app.db`
3. 写入文件存储路径:`{data_dir}/files`
4. 生成随机 `secret_key`(若未配置)
5. 创建 `admin_api_key`(你输入的值或随机生成)
6. 将最终配置写入 `config.toml`
随后正常启动服务。
## 前台运行
```bash
./open-aaas-server run
```
启动后监听默认地址 `0.0.0.0:8080`。按 `Ctrl+C` 或发送 `SIGTERM` 可优雅关闭。
如果当前目录已有 `config.toml`,会直接加载配置启动,不再询问。
## 后台运行
```bash
./open-aaas-server run-detached
```
- Linux/macOS:通过 `nohup` 后台运行,日志输出到 `{data_dir}/server.log`
- Windows:通过 `cmd /C start /B` 后台运行
后台启动后会写入 pidfile,用于后续管理和状态查询。
## 查看状态
```bash
./open-aaas-server status
```
输出示例:
```
配置文件: /path/to/config.toml
数据目录: /path/to/data
监听地址: 0.0.0.0:8080
运行状态: 运行中 (PID: 12345)
```
## 停止服务
```bash
./open-aaas-server stop
```
向后台进程发送 `SIGTERM`,等待最多 5 秒优雅退出;超时则发送 `SIGKILL` 强制终止,并清理 pidfile。
## 环境变量
服务端启动时会自动加载当前目录的 `.env` 文件(如果存在)。
以下环境变量可覆盖配置文件中的对应项,前缀为 `APP__`,层级用双下划线分隔:
| 环境变量 | 对应配置项 |
|----------|-----------|
| `APP__SECRET_KEY` | `secret_key` |
| `APP__ADMIN_API_KEY` | `admin_api_key` |
| `APP__LOG_LEVEL` | `log_level` |
| `APP__SERVER__ADDR` | `server.addr` |
| `APP__DATABASE__URL` | `database.url` |
| `APP__AGENT__HEARTBEAT_TIMEOUT_SECS` | `agent.heartbeat_timeout_secs` |
| `APP__TASK__RESULT_RETENTION_DAYS` | `task.result_retention_days` |
| `APP__TASK__FILE_STORAGE_PATH` | `task.file_storage_path` |
| `APP__TASK__MAX_FILE_SIZE_MB` | `task.max_file_size_mb` |
示例:
```bash
APP__SERVER__ADDR="0.0.0.0:3000" APP__LOG_LEVEL=debug ./open-aaas-server run
```
`ADMIN_API_KEY` 环境变量(无前缀)也可以直接覆盖管理员 API Key,优先级高于配置文件。
## 配置文件说明
`config.toml` 完整示例:
```toml
secret_key = "xxx" # HMAC 密钥,首次启动自动生成
admin_api_key = "xxx" # 管理员 API Key
log_level = "info" # trace / debug / info / warn / error
[server]
addr = "0.0.0.0:8080" # 监听地址
timeout_secs = 30 # HTTP 请求超时(秒)
max_body_size = 10485760 # 最大请求体大小(10MB)
[database]
url = "sqlite:./data/app.db" # SQLite 数据库路径
[agent]
heartbeat_timeout_secs = 60 # Agent 心跳超时(秒)
[task]
result_retention_days = 7 # 任务结果保留天数
file_storage_path = "./data/files" # 文件存储路径
max_file_size_mb = 50 # 单文件大小限制(MB)
```
首次启动后无需手动修改。若需调整,直接编辑 `config.toml` 后重启即可。
## 管理员 API Key
Admin API Key 用于调用管理员接口(创建服务、查看全量任务等)。获取方式:
1. **首次启动自动生成**:控制台会打印 `Admin API Key: ak_admin_xxx`,同时写入 `config.toml`
2. **环境变量覆盖**:启动前设置 `ADMIN_API_KEY` 或 `APP__ADMIN_API_KEY`
3. **查看配置文件**:从 `config.toml` 的 `admin_api_key` 字段读取
请务必妥善保存,避免泄露。