OpenClaw Docker 部署:调用本地模型
OpenClaw Docker 部署:调用本地模型
如果你已经有一台装好Docker的服务器,并且想在本地调用自己的大模型(比如用vLLM、llama.cpp或Ollama部署的服务),那么通过Docker容器来运行OpenClaw会是一个高效又省心的选择。下面这套流程,能帮你快速搭起来。
一、前提条件
动手之前,先确认几件事儿。首先,Docker得是装好的,跑个docker run hello-world命令能通过就行。最关键的是,你得已经部署好了一个提供OpenAI兼容API的本地模型服务。这里有几个关键信息需要你提前准备好:
- 服务地址:比如
http://192.168.12.99:8000 - 接口路径:必然是
POST /v1/chat/completions - 模型ID:这个要看你的具体服务,例如
zai-org/GLM-4.7-Flash
另外,如果服务端设置了鉴权,记得备好API Key;要是没鉴权,随便写个占位字符串也能用。
二、准备配置目录
第一步,在宿主机上创建一个专属的配置目录。打开终端,执行下面这条命令就行:
mkdir -p ~/.openclaw
三、编写配置文件
配置目录有了,接下来就是核心环节——写配置文件。在刚创建的目录里,新建一个openclaw.json文件:
nano ~/.openclaw/openclaw.json
然后把下面的配置模板粘贴进去。注意了,这里有几个关键值必须按你的实际情况修改:
baseUrl:你的本地模型服务地址。apiKey:对应服务的API Key。- 模型
id:务必和模型服务里的ID保持一致。 gateway.auth.token:Web控制台的登录凭证,改成你自己生成的一串复杂字符串。
{
"models": {
"providers": {
"vllm": {
"baseUrl": "http://10.1.201.196:8000/v1",
"apiKey": "vllm-local",
"api": "openai-completions",
"models": [{
"id": "zai-org/GLM-4.7-Flash",
"name": "GLM-4.7 Flash (vLLM)",
"contextWindow": 32768,
"maxTokens": 4096
}]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "vllm/zai-org/GLM-4.7-Flash"
},
"workspace": "/home/node/.openclaw/workspace"
}
},
"gateway": {
"bind": "lan",
"mode": "local",
"port": 18789,
"auth": {
"mode": "token",
"token": "请替换为自定义的一串长 token"
},
"controlUi": {
"allowInsecureAuth": true,
"dangerouslyDisableDeviceAuth": true
}
}
}
为了方便你核对,这里把几个核心配置项拎出来说明一下:
| 配置项 | 说明与示例 |
|---|---|
baseUrl |
本地模型服务的根地址,确保容器内能访问。例如:http://192.168.12.99:8000/v1 |
apiKey |
如果本地服务没有鉴权,填任意字符串即可;有鉴权则填入真实的Key。 |
id / primary |
此处填写的模型ID,必须与本地服务中实际部署的模型ID完全一致。 |
token |
这是登录Web控制台的密码,务必替换成你自己生成的一串高复杂度随机字符串。 |
四、拉取镜像并启动容器
配置写完,就可以启动容器了。依次执行下面两条命令,先拉取最新的镜像,然后以守护进程模式运行容器。
docker pull ghcr.io/openclaw/openclaw:latest
docker run -d \
--name openclaw \
--restart unless-stopped \
-p 18789:18789 \
-v ~/.openclaw:/home/node/.openclaw \
ghcr.io/openclaw/openclaw:latest
这条docker run命令做了几件事:把容器命名为openclaw,设置自动重启,将宿主机的18789端口映射到容器内,最后把本地的配置目录挂载进去。
五、权限问题(EACCES)
如果容器启动后,查看日志发现有类似EACCES: permission denied这样的报错(比如在写入workspace/AGENTS.md文件时),别慌。这通常是挂载目录的权限问题。回到宿主机,执行下面这组命令修复一下:
sudo chown -R 1000:1000 ~/.openclaw
sudo chmod -R 755 ~/.openclaw
docker restart openclaw
六、访问与验证
一切就绪后,我们来验证服务是否正常。
- 查看日志:运行
docker logs -f openclaw,可以实时查看容器日志,确保没有报错。 - 访问Web控制台:打开浏览器,访问
http://<你的宿主机IP>:18789(例如http://192.168.12.99:18789)。 - 登录并测试:在登录界面输入配置文件中设置的
gateway.auth.token。进入控制台后,试着发条消息,如果一切正常,请求就会被发送到你配置的本地模型服务并得到回复。
七、常用命令
把下面这几个命令存好,日常管理和排错都用得上:
docker logs -f openclaw # 实时查看日志
docker restart openclaw # 修改配置后,重启容器生效
docker stop openclaw # 停止容器
docker rm -f openclaw # 删除容器(配置文件仍保存在 ~/.openclaw 目录中)
本文使用镜像:ghcr.io/openclaw/openclaw:latest