参考文档(官方):Docker - OpenClaw

为什么想要用Docker安装部署Openclaw小龙虾呢?

  • 隔离可丢弃的网关环境

  • 方便迁移

  • 单纯不想在本地宿主机上安装

前置要求

  • Docker Desktop(或 Docker Engine)+ Docker Compose v2

  • 至少 2 GB RAM 用于镜像构建(在 1 GB 主机上,pnpm install 可能因 OOM 被终止并以 137 退出)

  • 足够的磁盘空间用于镜像和日志

  • 如果在 VPS/公网主机上运行,请查看 网络暴露的安全加固, 尤其是 Docker DOCKER-USER 防火墙策略

我在一个路径下专门安装docker应用,路径为/home/ahui/docker-apps/ ;本文主要完成了一个非常规范的、基于非 root 环境和自定义目录的 Docker 生产级部署,这种部署方式非常安全,且后续备份 /home/ahui/docker-apps/openclaw/data 文件夹就能迁移所有配置。

一、容器化网关

1.1 下载仓库源码

# 进入容器应用目录
cd  /home/ahui/docker-apps/

# git源码
git clone https://github.com/openclaw/openclaw.git

# 下载完以后就会出现文件夹/home/ahui/docker-apps/openclaw/切换进去这个目录下
cd /home/ahui/docker-apps/openclaw/
# 后续openclaw容器应用的卷基本上也就放这,防止污染环境

1.2 准备配置文件

openclaw官方会提供一个示例环境文件,先复制一份出来修改

# 复制环境配置文件
cp .env.example .env

使用Vim或nano修改.env文件,加入以下内容

# -----------------------------------------------------------------------------
# Gateway auth + paths (已适配你的 ahui 路径)
# -----------------------------------------------------------------------------

# 1. 生成 Token (手动执行 openssl rand -hex 32 填入)
OPENCLAW_GATEWAY_TOKEN=你的随机字符串

# 2. 定义宿主机物理路径 (注意:这里是给 Compose 读的,用宿主机路径)
# 这样 YAML 里的 ${OPENCLAW_CONFIG_DIR} 就会指向这里
OPENCLAW_CONFIG_DIR=/home/ahui/docker-apps/openclaw/data
OPENCLAW_WORKSPACE_DIR=/home/ahui/docker-apps/openclaw/workspace

# 3. 设置时区
OPENCLAW_TZ=Asia/Shanghai

# 4. 如果你想通过沙箱运行代码,需要获取 Docker GID
# 执行命令: stat -c '%g' /var/run/docker.sock
DOCKER_GID=刚才命令返回的数字(通常是999或998)

1.3 调整docker-compose.yml

官方的 YAML 文件为了通用性,默认是以 root 逻辑或者极其保守的权限运行的。为了适配我们自己的普通ahui用户,对 openclaw-gateway 服务做以下微调:

  1. 指定运行用户:防止容器以 root 创建文件,导致你在宿主机打不开。

  2. 开启 Docker 控制权(如果你需要 OpenClaw 运行代码沙箱)。

# 片段示例
services:
  openclaw-gateway:
    image: ${OPENCLAW_IMAGE:-openclaw:local}
    build: .
    user: "1000:1000"  # <--- [新增] 强制使用 node 用户运行
    env_file:
      - path: .env
        required: false
    # ... environment 部分保持不动 ...
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
      # --- [取消下面两行的注释] ---
      - /var/run/docker.sock:/var/run/docker.sock
    group_add:
      - "${DOCKER_GID}" # <--- [取消这两行注释]
    # ... 其余保持不动 ...

  command:
      [
        "node",
        "dist/index.js",
        "gateway",
        "--bind",
        "${OPENCLAW_GATEWAY_BIND:-lan}",
        "--port",
        "18789",
        "--allow-unconfigured", # <--- 添加这一行,注意前面的逗号
      ]

1.4 权限预处理

在你执行 docker compose up 之前,务必在宿主机执行以下命令,否则容器启动后会因为无法创建 openclaw.json 而崩溃:

cd /home/ahui/docker-apps/openclaw
# 1.创建目录
mkdir -p data workspace

# 2.授予容器内用户(UID 1000)权限
sudo chown -R 1000:1000 data workspace

# 3.确认你的 ahui 用户在 docker 组(如果没操作过请执行)
sudo usermod -aG docker $USER && newgrp docker

1.5 构建并运行

docker compose build
docker compose up -d

#成功运行后,检查容器状态,首先确认两个服务(Gateway 和 CLI)是否都在正常运行
#如果 STATUS 显示为 Up 或 Up (healthy),说明程序已经成功启动。
docker compose ps

1.6 访问Web界面

在浏览器中输入:http://localhost:18789

  • 登录方式:使用在 .env 中设置的 OPENCLAW_GATEWAY_TOKEN 进行身份验证

  • 首次配置:进入界面后,你可以在设置中配置 OpenAI、Anthropic 或 Gemini 的 API Key

到这里基本上都配置完成了,已经可以正常工作了,其他碰到什么就去AI问就ok