账号投喂服务 - 让用户通过简单的 Web 界面投喂 Amazon Q 账号到主服务。
- ✅ 独立部署,与主服务解耦
- ✅ 友好的 Web 界面
- ✅ URL 登录(设备授权)
- ✅ 手动投喂凭据
- ✅ 批量投喂账号
- ✅ 无需数据库(内存存储临时会话)
确保主服务已启动,然后:
# 1. 复制环境变量配置
cp .env.example .env
# 2. 编辑 .env 文件
# 配置 API_SERVER 指向主服务地址
# 3. 启动服务
docker-compose up -d
# 4. 查看日志
docker-compose logs -f
# 5. 停止服务
docker-compose down服务访问地址:http://localhost:8001/
# 1. 安装 uv (如果未安装)
pip install uv
# 2. 创建虚拟环境并安装依赖
uv venv
uv pip install -r requirements.txt
# 3. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,确保 API_SERVER 指向主服务
# 4. 启动服务
python app.py使用 python app.py 直接部署或 Docker 部署在功能上没有区别,可根据您的环境偏好选择。
# 投喂服务端口(默认 8001)
FEEDER_PORT=8001
# 主服务地址(必须配置)
# Docker Compose 环境:http://q2api:8000
# 本地开发环境:http://localhost:8000
API_SERVER=http://localhost:8000
# HTTP代理设置(可选)
HTTP_PROXY=""
# 主服务管理员密码(如果主服务配置了 ADMIN_PASSWORD)
API_SERVER_PASSWORD=重要: 确保 API_SERVER 配置正确,指向主服务地址!
- 访问 http://localhost:8001/
- 填写账号标签(可选)
- 点击"🚀 开始登录"
- 在打开的授权页面完成登录
- 返回页面,点击"⏳ 等待授权并创建账号"
- 等待最多 5 分钟,账号自动创建
如果已有账号凭据(clientId、clientSecret、refreshToken),可直接在"手动投喂账号"区域填写并提交。
准备 JSON 数组格式的账号列表:
[
{
"label": "账号1",
"clientId": "xxx",
"clientSecret": "xxx",
"refreshToken": "xxx"
},
{
"label": "账号2",
"clientId": "yyy",
"clientSecret": "yyy",
"refreshToken": "yyy"
}
]在"批量投喂账号"区域粘贴并提交。
- 框架: FastAPI
- HTTP 客户端: httpx
- OIDC 授权: 自实现(无第三方库依赖)
- 会话存储: 内存字典(无需数据库)
- 技术栈: 原生 HTML + CSS + JavaScript
- 样式: 内联 CSS(深色主题)
- 交互: 原生 Fetch API
account-feeder/
├── app.py # FastAPI 后端服务
├── index.html # Web 前端界面
├── requirements.txt # Python 依赖
├── .env.example # 环境变量示例
├── .env # 环境变量配置(需自行创建)
├── docker-compose.yml # Docker Compose 配置
├── Dockerfile # Docker 镜像配置
└── README.md # 本文件
启动设备授权流程
请求:
{
"label": "账号标签(可选)",
"enabled": true
}响应:
{
"authId": "会话ID",
"verificationUriComplete": "授权URL",
"userCode": "用户代码",
"expiresIn": 600,
"interval": 1
}轮询并创建账号
响应:
{
"status": "completed",
"account": {
"id": "账号ID",
"label": "账号标签",
...
}
}创建单个账号
请求:
{
"label": "账号标签",
"clientId": "客户端ID",
"clientSecret": "客户端密钥",
"refreshToken": "刷新令牌",
"accessToken": "访问令牌(可选)",
"enabled": true
}批量创建账号
请求:
{
"accounts": [
{
"label": "账号1",
"clientId": "xxx",
"clientSecret": "xxx",
"refreshToken": "xxx"
}
]
}健康检查
- ⏱️ URL 登录有 5 分钟超时限制
- 🔗 确保主服务正常运行且可访问
- 🔒 建议在内网环境使用,避免暴露到公网
- 📊 会话数据存储在内存中,服务重启后丢失
可能原因:
- 主服务未运行或不可访问
API_SERVER配置错误- 主服务的
/v2/accounts接口不可用
解决方法:
- 检查主服务是否正常运行
- 验证
API_SERVER配置是否正确 - 查看主服务日志排查问题
可能原因:
- 未在 5 分钟内完成授权
- 网络连接问题
解决方法:
- 重新开始授权流程
- 检查网络连接
- 确保能访问 AWS OIDC 服务
- ✅ 仅在可信网络环境使用
- ✅ 使用 HTTPS(通过反向代理)
- ✅ 限制访问来源(防火墙规则)
- ✅ 定期清理内存中的过期会话
- ✅ 添加访问日志监控
与主项目保持一致
本服务是 q2api 项目的一部分。