fawney19 519ad67eb1 refactor: 代理节点架构重构与功能增强
aether-proxy:
- 重构 main.rs,拆分为 app/state/hardware/net 模块
- setup.rs 拆分为 setup/tui.rs + setup/service.rs,支持 systemd 服务管理子命令
- 新增 delegate 端点,支持后端通过代理节点转发请求而非传统 CONNECT 代理
- 注册时上报硬件信息(CPU/内存/fd_limit)和估算最大并发数
- 心跳上报活跃连接数,支持远程下发 node_name 配置
- HTTP 转发时剥离 X-Forwarded-* 等敏感头部
- 切换到 rustls-tls,降低日志级别减少噪音

后端:
- 从 http_client.py 提取代理相关逻辑至 proxy_node/resolver.py
- 从 routes.py 提取业务逻辑至 proxy_node/service.py
- handler 支持 delegate 模式(通过代理节点 HTTP 端点转发而非 CONNECT 隧道)
- ProxyNode 模型新增 hardware_info 和 estimated_max_concurrency 字段

前端:
- 新增 HardwareTooltip 组件展示节点硬件信息
- 远程配置支持下发 node_name
2026-02-08 13:33:08 +08:00
2025-12-10 20:52:44 +08:00
2025-12-10 20:52:44 +08:00
2025-12-19 17:31:15 +08:00

Aether Logo

Aether

开源 AI API 网关
支持 Claude / OpenAI / Gemini 及其 CLI 客户端的统一接入层

简介部署环境变量Q&A


简介

Aether 是一个自托管的 AI API 网关,为团队和个人提供多租户管理、智能负载均衡、成本配额控制和健康监控能力。通过统一的 API 入口,可以无缝对接 Claude、OpenAI、Gemini 等主流 AI 服务及其 CLI 工具。

页面预览

首页 仪表盘
首页 仪表盘
健康监控 用户管理
健康监控 用户管理
提供商管理 使用记录
提供商管理 使用记录
模型详情 关联提供商
模型详情 关联提供商
链路追踪 系统设置
链路追踪 系统设置

部署

Docker Compose推荐预构建镜像

# 1. 克隆代码
git clone https://github.com/fawney19/Aether.git
cd Aether

# 2. 配置环境变量
cp .env.example .env
python generate_keys.py  # 生成密钥, 并将生成的密钥填入 .env

# 3. 部署 / 更新(自动执行数据库迁移)
docker compose pull && docker compose up -d

# 4. 升级前备份
docker compose exec postgres pg_dump -U postgres aether | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz

Docker Compose本地构建镜像

# 1. 克隆代码
git clone https://github.com/fawney19/Aether.git
cd Aether

# 2. 配置环境变量
cp .env.example .env
python generate_keys.py  # 生成密钥, 并将生成的密钥填入 .env

# 3. 部署 / 更新(自动构建、启动、迁移)
./deploy.sh

本地开发

# 启动依赖
docker compose -f docker-compose.build.yml up -d postgres redis

# 后端
uv sync
./dev.sh

# 前端
cd frontend && npm install && npm run dev

环境变量

必需配置

变量 说明
DB_PASSWORD PostgreSQL 数据库密码
REDIS_PASSWORD Redis 密码
JWT_SECRET_KEY JWT 签名密钥(使用 generate_keys.py 生成)
ENCRYPTION_KEY API Key 加密密钥(更换后需重新配置 Provider Key
ADMIN_EMAIL 初始管理员邮箱
ADMIN_USERNAME 初始管理员用户名
ADMIN_PASSWORD 初始管理员密码

可选配置

变量 默认值 说明
APP_PORT 8084 应用端口
API_KEY_PREFIX sk API Key 前缀
LOG_LEVEL INFO 日志级别 (DEBUG/INFO/WARNING/ERROR)
GUNICORN_WORKERS 4 Gunicorn 工作进程数
DB_PORT 5432 PostgreSQL 端口
REDIS_PORT 6379 Redis 端口

Q&A

Q: 如何开启/关闭请求体记录?

管理员在 系统设置 中配置日志记录的详细程度:

级别 记录内容
Base 基本请求信息
Headers Base + 请求头
Full Headers + 请求体

Q: 管理员如何给模型配置 1M上下文 / 1H缓存 能力支持?

  1. 模型管理: 给模型设置 1M上下文 / 1H缓存 的能力支持, 并配置好价格
  2. 提供商管理: 给端点添加支持该能力的密钥, 并勾选对应的能力标签

Q: 用户如何使用 1H缓存?

  • 模型级别: 在模型管理中针对指定模型开启 1H缓存策略
  • 密钥级别: 在密钥管理中针对指定密钥使用 1H缓存策略

注意: 若对密钥设置强制 1H缓存, 则该密钥只能使用支持 1H缓存的模型, 匹配提供商Key, 将会导致这个Key无法同时用于Claude Code、Codex、GeminiCLI, 因为更推荐使用模型开启1H缓存.

Q: 如何配置负载均衡?

在管理后台 提供商管理 中切换调度模式:

模式 说明 适用场景
提供商优先 按 Provider 优先级排序, 同优先级内按 Key 优先级排序, 相同优先级哈希分散 优先使用特定供应商
全局 Key 优先 忽略 Provider 层级, 所有 Key 按全局优先级统一排序, 相同优先级哈希分散 跨 Provider 统一调度, 最大化利用所有 Key

Q: 更新出问题如何回滚?

有备份的情况(推荐):

# 1. 停止应用
docker compose stop app

# 2. 恢复数据库(先清空再导入)
docker compose exec -T postgres psql -U postgres -c "DROP DATABASE aether; CREATE DATABASE aether;"
gunzip < backup_xxx.sql.gz | docker compose exec -T postgres psql -U postgres -d aether

# 3. 拉取旧版本镜像并重启
#    方式一:使用具体版本 tag如果有发布版本号
#    将 docker-compose.yml 中 image 从 ghcr.io/fawney19/aether:latest 改为指定版本
#    方式二:使用之前记录的镜像 digest
#    将 image 改为 ghcr.io/fawney19/aether@sha256:xxxxx
docker compose up -d app

可以在升级前通过 docker inspect ghcr.io/fawney19/aether:latest --format '{{index .RepoDigests 0}}' 记录当前镜像 digest方便回滚时使用。

没有备份的情况:

# 1. 用当前容器回退数据库迁移(回退 1 步,按需调整数字)
docker compose exec app alembic downgrade -1

# 2. 查看回退后的版本确认正确
docker compose exec app alembic current

# 3. 切回旧镜像并重启(同上方式修改 docker-compose.yml 中的 image
docker compose up -d app

注意:没有备份的回滚依赖 alembic downgrade如果迁移涉及不可逆的数据变更如删除列可能无法完全恢复数据。因此强烈建议升级前备份。


许可证

本项目采用 Aether 非商业开源许可证。允许个人学习、教育研究、非盈利组织及企业内部非盈利性质的使用;禁止用于盈利目的。商业使用请联系获取商业许可。

联系作者

QQ二维码

Star History

Star History Chart

Description
No description provided
Readme 168 MiB
Languages
Python 68.3%
Vue 21.7%
TypeScript 7.3%
Rust 2%
CSS 0.3%
Other 0.2%