Docker Compose 部署 OpenClaw,并使用 XAI Router 的 MiniMax-M2.1
Posted February 9, 2026 by XAI 技术团队 ‐ 5 min read
OpenClaw + XAI Router
本文将带你用一个开源模板仓库,通过 Docker Compose 快速部署 OpenClaw Gateway,并将默认模型指向 XAI Router 的 MiniMax-M2.1。
- 模板仓库:https://github.com/xaixagent/openclaw
- 默认协议:OpenAI Chat Completions(
/v1/chat/completions) - 你只需要:
XAI_API_KEY(XAI Router 原生兼容 OpenAI 的 API 路径)
你将得到什么
- 一个可长期运行的
openclaw-gateway容器(默认端口18789) - 一个 OpenAI Chat API 兼容入口:
http://<你的服务器>:18789/v1/chat/completions - 默认主模型:
xairouter/MiniMax-M2.1(由配置文件决定,不需要改你的业务代码)
先决条件
- 一台 Linux 机器(本地或服务器均可)
- 已安装 Docker 与 Docker Compose(能运行
docker --version、docker-compose --version) - 一个 XAI Router API Key(形如
sk-...)
第一步:下载部署模板
git clone https://github.com/xaixagent/openclaw.git
cd openclaw
这个目录里最关键的文件:
docker-compose.yml:定义openclaw-gateway与openclaw-cli.env.example:环境变量模板configs/openclaw.openai-chat.json:默认配置(MiniMax-M2.1 + Chat Completions)
第二步:创建并填写 .env
cp .env.example .env
注意:.env 里会保存密钥,请不要提交到 Git 仓库。
编辑 .env,至少需要两项:
XAI_API_KEY:你的 XAI Router KeyOPENCLAW_GATEWAY_TOKEN:Gateway 的访问令牌(用于 HTTPAuthorization: Bearer ...)
生成一个随机的 OPENCLAW_GATEWAY_TOKEN(两选一即可;建议 32 字节/64 位十六进制字符串):
openssl rand -hex 32
或:
python - <<'PY'
import secrets
print(secrets.token_hex(32))
PY
一个最小可用的 .env 示例:
XAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
OPENCLAW_GATEWAY_TOKEN="your-random-token"
OPENCLAW_CONFIG_NAME="openclaw.openai-chat.json"
OPENCLAW_GATEWAY_PORT=18789
说明:
OPENCLAW_CONFIG_NAME默认就是openclaw.openai-chat.json,里面已经配置好主模型为MiniMax-M2.1。- 在 Docker 场景里,服务需要监听
0.0.0.0才能被端口映射访问,所以保持OPENCLAW_GATEWAY_BIND=lan(默认值)即可。
第三步:启动 OpenClaw Gateway
docker-compose up -d openclaw-gateway
查看运行状态:
docker-compose ps
查看启动日志(第一次启动建议看一下):
docker-compose logs -f openclaw-gateway
第四步:用 curl 验证 MiniMax-M2.1 是否可用
在同一台机器执行:
set -a
source .env
set +a
curl -sS http://127.0.0.1:${OPENCLAW_GATEWAY_PORT:-18789}/v1/chat/completions \
-H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \
-H "Content-Type: application/json" \
-H "x-openclaw-agent-id: main" \
-d '{"model":"openclaw","messages":[{"role":"user","content":"你好,简单介绍一下你自己"}]}'
你会收到一个 OpenAI Chat Completions 风格 的 JSON 响应。
为什么请求里写的是 model: "openclaw"?
这不是上游模型名,而是 OpenClaw Gateway 的“统一模型名”。
- 你的应用侧:始终写
model: "openclaw" - 真正的上游模型:由配置决定(本模板默认为
xairouter/MiniMax-M2.1)
想确认默认模型,可以直接打开:configs/openclaw.openai-chat.json,你会看到类似配置:
{
"agents": {
"defaults": {
"model": { "primary": "xairouter/MiniMax-M2.1" }
}
},
"models": {
"providers": {
"xairouter": {
"baseUrl": "https://api.xairouter.com/v1",
"api": "openai-completions"
}
}
}
}
第五步:在你的代码里当作 OpenAI Chat API 使用(可选)
只要把 OpenAI SDK 的:
baseURL指向你的 Gateway:http://<服务器>:18789/v1apiKey填OPENCLAW_GATEWAY_TOKEN
即可像调用 OpenAI 一样调用 OpenClaw。
Node.js(openai SDK)示例:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "http://127.0.0.1:18789/v1",
apiKey: process.env.OPENCLAW_GATEWAY_TOKEN,
});
const resp = await client.chat.completions.create({
model: "openclaw",
messages: [{ role: "user", content: "ping" }],
});
console.log(resp.choices[0]?.message?.content);
常用维护命令
停止并删除容器(保留数据目录 state/):
docker-compose down
升级镜像并重启:
docker-compose pull
docker-compose up -d openclaw-gateway
如果你需要“彻底重置”(会清掉会话/状态数据),可以:
docker-compose down
rm -rf state workspace codex
想了解 OpenClaw 通过 XAI Router 接入更多模型/协议,可参考:/blog/openclaw/