使用 Docker 部署 OpenClaw 是一种更干净、更隔离的方式,尤其适合服务器或长期运行的环境。这种方式能帮你轻松管理数据持久化、配置和更新。
下面我会先介绍 Docker 部署的优势,然后提供一份详细的部署指南,包括两种主流方法。
Volumes),OpenClaw 的配置、会话等数据都存储在宿主机上,即使容器被删除或更新,核心数据也不会丢失。在开始之前,请确保你的系统满足以下条件:
如果你使用的是 Windows 系统,推荐通过 WSL 2 后端的 Docker Desktop 进行部署,这样体验会更好。
这是官方推荐的部署方式,它通过一个交互式脚本,可以一站式完成构建、配置和启动,非常适合初次部署。
克隆官方仓库
首先,需要将 OpenClaw 的源代码克隆到本地,并进入项目目录。
git clone https://github.com/openclaw/openclaw.git
cd openclaw
运行 Docker 设置脚本
这是最关键的一步。直接执行项目中的 Docker 设置脚本。
./docker-setup.sh
执行后,脚本会启动一个交互式向导,引导你完成:
Kimi 这类第三方平台),并输入你的 API Key。你也可以选择使用本地模型(如 Ollama)。Gateway Token),并启动 Gateway 服务。验证部署
脚本完成后,可以通过以下命令检查 Gateway 服务是否正常运行。
docker compose logs openclaw-gateway
如果日志中出现 [gateway] listening on ws://0.0.0.0:18789 的字样,就说明部署成功了。
这种方法适合想深入了解或需要对配置进行精细控制的用户。这里以官方 GitHub Container Registry (ghcr.io/openclaw/openclaw:latest) 的镜像为例。
创建项目目录和持久化数据目录
mkdir -p ~/openclaw/data ~/openclaw/workspace
cd ~/openclaw
创建 docker-compose.yml 文件
在 ~/openclaw 目录下创建一个 docker-compose.yml 文件,并填入以下内容。
services:
openclaw:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw-gateway
restart: always
ports:
- "127.0.0.1:18789:18789"
volumes:
- ~/openclaw/data:/home/node/.openclaw
- ~/openclaw/workspace:/home/node/.openclaw/workspace
environment:
- NODE_ENV=production
配置说明:
image: 使用的 Docker 镜像。volumes: 将宿主机的两个目录挂载到容器内。这是数据持久化的关键,确保了所有配置和会话数据都保存在宿主机上,容器更新或删除后不会丢失。ports: 将容器的 18789 端口映射到宿主机的 127.0.0.1 地址上,这会让 Gateway 服务只能通过本地环回地址访问,增强了安全性。restart: 设置为 always,保证容器在退出或系统重启后能自动恢复运行。启动容器
docker compose up -d
这条命令会根据配置文件在后台启动 OpenClaw 容器。
无论用哪种方法,部署完成后,还需要进行一些初始化配置,并确保安全访问。
运行交互式配置向导
如果你是首次使用,需要运行 onboard 命令来完成模型的初始设置。
docker compose run --rm openclaw-cli onboard
这个命令会启动一个向导,流程和上面 docker-setup.sh 脚本类似,引导你完成 API Key、渠道等基础配置。
访问网页控制台
一切就绪后,打开浏览器访问 http://127.0.0.1:18789。首次访问时,需要输入一个 Gateway Token 进行身份验证。
如何获取 Gateway Token?
Token 在你完成 onboard 配置向导后会自动生成。你可以通过两种方式找到它:
.env 文件:在交互式配置完成后,Docker 设置脚本会在项目根目录生成一个 .env 文件,里面包含 OPENCLAW_GATEWAY_TOKEN 变量,其值就是你的 Token。.env 文件,也可以查看 Gateway 的启动日志,通常在首次启动时会打印出生成的 Token 或包含 Token 的完整访问 URL。docker compose exec openclaw-gateway openclaw gateway token generate
配置聊天渠道
后续可以通过 CLI 容器来添加或管理聊天渠道。例如,添加 Telegram 机器人的命令如下:
docker compose run --rm openclaw-cli channels add --channel telegram --token "<你的Telegram机器人Token>"
更新 OpenClaw:更新镜像并重启容器即可。
docker compose pull openclaw
docker compose up -d
配置自定义模型(以 DeepSeek 为例):不建议通过环境变量配置自定义模型,推荐直接修改 ~/openclaw/data/openclaw.json 文件。一个参考配置如下:
{
"models": {
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com",
"apiKey": "你的DeepSeek API密钥",
"api": "openai-completions",
"models": [ { "id": "deepseek-chat", "name": "deepseek-chat" } ]
}
}
},
"agents": {
"defaults": { "model": "deepseek/deepseek-chat" }
},
"gateway": { "auth": { "mode": "token" } }
}
安全访问公网:如果想把服务暴露到公网,强烈建议使用 Nginx 等反向代理,并配置 HTTPS 证书和域名来保证通信安全。也可以使用 SSH 隧道作为临时的安全访问方案。
国内镜像加速:如果在国内拉取 ghcr.io 的镜像很慢,可以配置国内镜像加速源。或者使用社区维护的中文镜像,如 jerryan999/openclaw-zh:latest,它也同步了官方更新。
docker pull jerryan999/openclaw-zh:latest
配置变更不生效:OpenClaw 有配置缓存。如果修改配置后不生效,可以尝试停止容器,删除 agents/ 和 openclaw.json 文件,再重新启动。
docker compose down
rm -rf agents/ openclaw.json
docker compose up -d
这份指南涵盖了两种主要的Docker部署方式。你是打算在自己的本地机器上试水,还是准备直接部署到云服务器上长期运行呢?告诉我你的具体使用场景,我可以针对性地帮你推荐更合适的部署方案~