返回顶部
o

openclaw-docker-setupDocker化OpenClaw安装

Install and configure a fully operational Dockerized OpenClaw instance on macOS from scratch. Includes browser pairing, Discord channel setup, and optional Gmail/Google Drive integration. Use when user asks to "install openclaw docker", "set up dockerized openclaw", "openclaw in docker", or "isolated openclaw instance".

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
377
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

openclaw-docker-setup

openclaw-docker-setup

在 macOS 上的 Docker 中安装一个完全隔离、可用于生产环境的 OpenClaw 实例。
一次会话,从零到运行。所有常见陷阱均已内联处理。

支持在同一台机器上运行多个实例。 每个实例都有唯一的名称和端口。

最终你将获得:

  • - 一个命名容器,正在运行并自动重启
  • 通过命名 Docker 卷持久化数据(容器重建后数据依然保留)
  • 可在 http://127.0.0.1:YOUR_PORT/ 访问的控制面板
  • 已配置并可响应的 Discord 频道
  • (可选)通过 Himalaya 使用 Gmail(支持附件);通过 gog 使用 Google Drive



第 0 步:选择实例名称和端口

运行此自动检测脚本。它会扫描现有的 OpenClaw 容器,找到下一个可用端口,并建议一个名称。确认或覆盖。

bash

自动检测现有实例并建议下一个可用名称+端口


python3 - << AUTODETECT
import subprocess, re

查找所有正在运行的 openclaw 容器

result = subprocess.run( [docker, ps, -a, --format, {{.Names}} {{.Ports}}], capture_output=True, text=True )

existing = {}
for line in result.stdout.strip().splitlines():
parts = line.split( )
name = parts[0]
ports = parts[1] if len(parts) > 1 else
if openclaw in name.lower() or 18789 in ports:
m = re.search(r0\.0\.0\.0:(\d+)->18789, ports)
port = int(m.group(1)) if m else None
existing[name] = port

从 19002 开始查找下一个可用端口

used_ports = set(p for p in existing.values() if p) port = 19002 while port in used_ports: port += 1

建议名称

count = len(existing) + 1 names = [openclaw-main, openclaw-work, openclaw-demo, openclaw-test, openclaw-lab] suggested_name = names[min(count - 1, len(names) - 1)]

print(\n=== 现有 OpenClaw 实例 ===)
if existing:
for n, p in existing.items():
print(f {n} → 端口 {p})
else:
print( (未找到))

print(f\n=== 新实例建议 ===)
print(f INSTANCE={suggested_name})
print(f HOST_PORT={port})
print(f\n要接受,请运行:)
print(f export INSTANCE={suggested_name})
print(f export HOST_PORT={port})
print(f\n要覆盖,请替换值并使用您选择的值运行 export 命令。)
AUTODETECT

查看输出,然后设置您的变量:

bash

接受建议(粘贴上面输出中的 export 行)


export INSTANCE=openclaw-main
export HOST_PORT=19002

或使用您自己的值覆盖:

export INSTANCE=openclaw-demo export HOST_PORT=19003

本指南中的所有后续命令都使用 $INSTANCE 和 $HOST_PORT。 保持此终端会话打开,如果打开新会话,请重新导出变量。

多实例示例:

实例主机端口用途
openclaw-main19002主要个人助手
openclaw-demo
19003 | 公开演示/讲座 |
| openclaw-work | 19004 | 工作项目 |

每个实例都有自己的卷($INSTANCE-data、$INSTANCE-home)——数据完全隔离。



前提条件

  • - macOS (Darwin) — Intel 或 Apple Silicon
  • 已安装并运行 Docker Desktop(或 Docker Engine + CLI)
  • 如果使用 Claude Max/Pro 订阅,主机上已安装 Claude Code CLI(claude 命令可用)。如果使用原始 API 密钥,则跳过。

验证 Docker 正在运行:

bash
docker --version
docker ps

两个命令都必须成功才能继续。



第 1 步:拉取镜像

官方镜像位于 GitHub 容器注册表 (GHCR),而非 Docker Hub

bash
docker pull ghcr.io/openclaw/openclaw:latest

陷阱: Docker Hub 上的 openclaw/openclaw 不存在。始终使用 ghcr.io/openclaw/openclaw:latest。

成功: 拉取完成且无错误,docker images | grep openclaw 显示该镜像。



第 2 步:生成 Claude 设置令牌

如果您有原始 Anthropic API 密钥,请跳过此步骤 — 您将在第 3 步中通过 -e ANTHROPICAPIKEY=sk-ant-api03-... 传递它。

如果您有 Claude Max 或 Pro 订阅,请在主机上生成一个设置令牌:

bash
claude setup-token

复制令牌(格式:sk-ant-oat01-...)。您将在第 5 步中将其粘贴到容器中。

陷阱: 这是一个设置令牌,而不是 API 密钥。两者不同。设置令牌允许容器使用您的订阅进行身份验证。API 密钥按令牌计费。


第 3 步:启动容器

使用您在第 0 步中设置的 $INSTANCE 和 $HOST_PORT 变量。不要减少内存 — 512 MB 和 1024 MB 不足,会导致崩溃循环。

bash
docker run -d \
--name $INSTANCE \
--restart unless-stopped \
-p $HOST_PORT:18789 \
-m 2048m \
--cpus=2 \
--cap-drop=ALL \
--cap-add=NETBINDSERVICE \
--security-opt no-new-privileges \
-v ${INSTANCE}-data:/app/data \
-v ${INSTANCE}-home:/home/node \
-e NODE_OPTIONS=--max-old-space-size=1024 \
ghcr.io/openclaw/openclaw:latest

如果使用原始 API 密钥而不是设置令牌,请在镜像名称前添加 -e ANTHROPICAPIKEY=sk-ant-api03-...。

等待 10 秒,然后验证:

bash
docker ps --filter name=$INSTANCE

成功: 状态显示 Up X seconds,并且容器没有重启。

陷阱 — OOM 崩溃循环: 如果容器不断重启,请检查日志:
docker logs --tail 20 $INSTANCE
如果看到 JavaScript heap out of memory,容器需要 -m 2048m 和 -e NODE_OPTIONS=--max-old-space-size=1024。使用上面的完整命令重新创建。

陷阱 — 端口冲突: 如果端口已被占用,说明您在第 0 步中选择了错误的 HOSTPORT。重新运行冲突检查:lsof -i :$HOSTPORT。选择一个空闲端口并重新启动。


第 4 步:配置网关

默认情况下,网关绑定到容器内的 127.0.0.1(回环地址)。Docker 端口转发将流量发送到容器的网络接口,而不是其回环地址。您必须切换到 LAN 模式。

4a. 设置绑定到 LAN

bash
docker exec $INSTANCE node /app/openclaw.mjs config set gateway.bind lan

4b. 设置允许的来源

非回环绑定需要显式允许的来源,否则网关拒绝启动:

bash
docker exec $INSTANCE node /app/openclaw.mjs config set \
gateway.controlUi.allowedOrigins [http://127.0.0.1:$HOST_PORT] --json

4c. 重启以应用

bash
docker restart $INSTANCE

等待 10 秒,然后验证:

bash
curl -s -o /dev/null -w %{httpcode} http://127.0.0.1:$HOSTPORT/

成功: 返回 200。

陷阱 — 设置 LAN 绑定后崩溃: 如果您设置了 gateway.bind lan 但忘记了 allowedOrigins 步骤,容器会崩溃循环,并显示 non-loopback Control UI requires gateway.controlUi.allowedOrigins。运行第 4b 步,然后重启。


第 5 步:注册身份验证

重要: 不要直接将令牌粘贴到命令行中 — 它会被存储在 shell 历史记录中。下面的命令会交互式提示。

bash
docker exec -it $INST

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 openclaw-docker-setup-1775940122 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 openclaw-docker-setup-1775940122 技能

通过命令行安装

skillhub install openclaw-docker-setup-1775940122

下载

⬇ 下载 openclaw-docker-setup v1.0.2(免费)

文件大小: 19.84 KB | 发布时间: 2026-4-12 10:49

v1.0.2 最新 2026-4-12 10:49
Add all reference files: pitfalls, Gmail/Himalaya setup, Google Drive/gog setup, trigger tests, license.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部