[任务5] 重构方案:用 OpenWebUI + LiteLLM 替换 One-API + MySQL
技术栈简化: - 前端:One-API 网页管理 → OpenWebUI 极简界面(WEBUI_AUTH=False 无需登录,自动连接 LiteLLM) - 网关:One-API(数据库驱动)→ LiteLLM(纯 YAML 配置驱动) - 数据存储:MySQL(持久化) → LiteLLM 无状态(配置即代码) 配置简化: - 不需要注册账号、不需要点网页添加渠道 - 所有 5 个渠道的定义、模型映射、优先级、Failover 规则写在 litellm-config.yaml - API Key 填在 .env(占位符在 config.yaml 中引用) - 用户体验:打开网页 → 输入问题 → 自动用最合适的模型回答 已部署到 NAS,openwebui 正在初始化数据库(首次启动需要 1-2 分钟)
This commit is contained in:
@@ -1,50 +1,26 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
container_name: one-api-mysql
|
||||
litellm:
|
||||
image: ghcr.io/berriai/litellm:latest
|
||||
container_name: litellm-proxy
|
||||
restart: always
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||
- MYSQL_DATABASE=oneapi
|
||||
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY:-sk-1234}
|
||||
volumes:
|
||||
- ./mysql-data:/var/lib/mysql
|
||||
- ./litellm-config.yaml:/home/litellm/config.yaml:ro
|
||||
networks:
|
||||
- ai-network
|
||||
command: python -m litellm.proxy.proxy --config /home/litellm/config.yaml --port 4000
|
||||
|
||||
one-api:
|
||||
image: justsong/one-api:latest
|
||||
container_name: one-api
|
||||
openwebui:
|
||||
image: ghcr.io/open-webui/open-webui:latest
|
||||
container_name: openwebui
|
||||
restart: always
|
||||
ports:
|
||||
# 3000 已被 NAS 上的 Gitea 容器占用,改用 3001
|
||||
# NAS sshd 关闭了 AllowTcpForwarding,SSH 隧道方案不可行,改为仅绑定 NAS 局域网 IP(不经 frp,不映射公网)
|
||||
- "192.168.50.64:3001:3000"
|
||||
volumes:
|
||||
- ./one-api-data:/data
|
||||
environment:
|
||||
- SQL_DSN=root:${MYSQL_ROOT_PASSWORD}@tcp(mysql:3306)/oneapi
|
||||
- TZ=Asia/Shanghai
|
||||
depends_on:
|
||||
- mysql
|
||||
networks:
|
||||
- ai-network
|
||||
|
||||
lobe-chat:
|
||||
image: lobehub/lobe-chat:latest
|
||||
container_name: lobe-chat
|
||||
restart: always
|
||||
# 不发布主机端口:仅 Nginx 通过容器网络访问 lobe-chat:3210
|
||||
environment:
|
||||
- OPENAI_API_KEY=${ONE_API_TOKEN}
|
||||
- OPENAI_PROXY_URL=http://one-api:3000/v1
|
||||
- ACCESS_CODE=${LOBE_ACCESS_CODE}
|
||||
- DEFAULT_LANG=zh-CN
|
||||
# 只暴露聚合模型名,隐藏各厂商真实模型名(对应 SDD 3.2 模型映射设计)
|
||||
- OPENAI_MODEL_LIST=-all,+auto-vision=Auto Vision<vision>,+auto-text=Auto Text
|
||||
depends_on:
|
||||
- one-api
|
||||
- OPENAI_API_KEY=${LITELLM_MASTER_KEY:-sk-1234}
|
||||
- OPENAI_API_BASE=http://litellm:4000/v1
|
||||
- WEBUI_AUTH=False
|
||||
networks:
|
||||
- ai-network
|
||||
|
||||
@@ -53,14 +29,14 @@ services:
|
||||
container_name: nginx-proxy
|
||||
restart: always
|
||||
ports:
|
||||
# NAS 本机 80/443 已被其他服务占用(DSM/其他容器),改用 8443
|
||||
# NAS 本机 80/443 已被其他服务占用,改用 8443
|
||||
# 甲骨文 frp 隧道(frpc.toml [[proxies]] name=nexusai)将公网专属端口 3210 转发到 NAS 的 8443
|
||||
- "8443:443"
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- ./certs:/etc/nginx/certs:ro
|
||||
depends_on:
|
||||
- lobe-chat
|
||||
- openwebui
|
||||
networks:
|
||||
- ai-network
|
||||
|
||||
|
||||
Reference in New Issue
Block a user