164 lines
2.8 KiB
Markdown
164 lines
2.8 KiB
Markdown
|
|
# 部署指南
|
|||
|
|
|
|||
|
|
## 目标节点
|
|||
|
|
|
|||
|
|
**OMV (Open Media Vault) on NAS / Proxmox**
|
|||
|
|
|
|||
|
|
推荐直接跑在 Nas 上,不强制 Docker,直接 Python 运行。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 1 — 环境准备
|
|||
|
|
|
|||
|
|
### 检查 Python 版本
|
|||
|
|
```bash
|
|||
|
|
python3 --version # 需要 >= 3.9
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 创建用户(可选,推荐)
|
|||
|
|
```bash
|
|||
|
|
useradd -m -s /bin/bash litellm
|
|||
|
|
su - litellm
|
|||
|
|
mkdir -p ~/litellm-gateway
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 2 — 安装依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pip install litellm
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
可选:
|
|||
|
|
```bash
|
|||
|
|
pip install uvicorn[standard] # ASGI 服务器(生产推荐)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 3 — 配置
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd ~/litellm-gateway
|
|||
|
|
|
|||
|
|
# 复制环境变量模板
|
|||
|
|
cp .env.example .env
|
|||
|
|
|
|||
|
|
# 编辑 .env,填入真实值
|
|||
|
|
nano .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**必须设置的值:**
|
|||
|
|
- `MINIMAX_API_KEY` — MiniMax 真实 API Key
|
|||
|
|
- `LITELLM_MASTER_KEY` — 管理员 key(以 `sk-` 开头)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 4 — 启动
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
chmod +x run.sh
|
|||
|
|
./run.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**后台运行(生产):**
|
|||
|
|
```bash
|
|||
|
|
# nohup
|
|||
|
|
nohup ./run.sh > logs/litellm.log 2>&1 &
|
|||
|
|
|
|||
|
|
# 或用 systemd(见下方)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 5 — 验证
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 健康检查
|
|||
|
|
curl http://localhost:4000/health
|
|||
|
|
|
|||
|
|
# 测试 chat completions
|
|||
|
|
curl -X POST http://localhost:4000/v1/chat/completions \
|
|||
|
|
-H "Authorization: Bearer sk-your-master-key" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"model": "MiniMax-M2.7",
|
|||
|
|
"messages": [{"role": "user", "content": "Hello"}]
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 步骤 6 — OpenClaw 接入
|
|||
|
|
|
|||
|
|
在 `~/.openclaw/openclaw.json` 中修改 MiniMax provider:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"providers": {
|
|||
|
|
"minimax": {
|
|||
|
|
"apiKey": "sk-your-minimax-api-key"
|
|||
|
|
},
|
|||
|
|
"minimax-portal": {
|
|||
|
|
"apiKey": "sk-your-litellm-key",
|
|||
|
|
"baseURL": "http://<your-server>:4000/v1"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
> ⚠️ 注意:LiteLLM 使用 OpenAI 兼容接口,所以 OpenClaw 的 `minimax-portal` provider 可以直接指向 LiteLLM 的 `/v1` 端点。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## systemd 服务(OMV 持久化)
|
|||
|
|
|
|||
|
|
```ini
|
|||
|
|
# /etc/systemd/system/litellm.service
|
|||
|
|
[Unit]
|
|||
|
|
Description=LiteLLM Gateway
|
|||
|
|
After=network.target
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
Type=simple
|
|||
|
|
User=litellm
|
|||
|
|
WorkingDirectory=/home/litellm/litellm-gateway
|
|||
|
|
ExecStart=/home/litellm/litellm-gateway/run.sh
|
|||
|
|
Restart=always
|
|||
|
|
RestartSec=5
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo systemctl daemon-reload
|
|||
|
|
sudo systemctl enable litellm
|
|||
|
|
sudo systemctl start litellm
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 网络访问控制
|
|||
|
|
|
|||
|
|
### 仅内网访问(推荐)
|
|||
|
|
确保 LiteLLM 的端口 `:4000` 不暴露到公网。
|
|||
|
|
|
|||
|
|
### Tailscale / ZeroTier 组网(推荐)
|
|||
|
|
```bash
|
|||
|
|
# 在服务器上安装 Tailscale
|
|||
|
|
curl -fsSL https://tailscale.com/install.sh | sh
|
|||
|
|
tailscale up --accept-routes
|
|||
|
|
|
|||
|
|
# OpenClaw 节点也加入同一网络
|
|||
|
|
# 然后 LiteLLM 只监听 Tailscale IP(如 100.64.x.x:4000)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 防火墙规则(OMV)
|
|||
|
|
```bash
|
|||
|
|
# 只允许内网段访问 4000
|
|||
|
|
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 4000 -j ACCEPT
|
|||
|
|
iptables -A INPUT -p tcp --dport 4000 -j DROP
|
|||
|
|
```
|