Docker Compose 部署 OpenClaw,并使用 XAI Router 的 MiniMax-M2.1

Posted February 9, 2026 by XAI 技术团队 ‐ 5 min read

OpenClaw

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 路径)

你将得到什么

  1. 一个可长期运行的 openclaw-gateway 容器(默认端口 18789
  2. 一个 OpenAI Chat API 兼容入口:http://<你的服务器>:18789/v1/chat/completions
  3. 默认主模型:xairouter/MiniMax-M2.1(由配置文件决定,不需要改你的业务代码)

先决条件

  • 一台 Linux 机器(本地或服务器均可)
  • 已安装 Docker 与 Docker Compose(能运行 docker --versiondocker-compose --version
  • 一个 XAI Router API Key(形如 sk-...

第一步:下载部署模板

git clone https://github.com/xaixagent/openclaw.git
cd openclaw

这个目录里最关键的文件:

  • docker-compose.yml:定义 openclaw-gatewayopenclaw-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 Key
  • OPENCLAW_GATEWAY_TOKEN:Gateway 的访问令牌(用于 HTTP Authorization: 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/v1
  • apiKeyOPENCLAW_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/