干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备

干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备

还在苦恼Docker部署和云服务器部署的龙虾不能控制本地的电脑吗,OpenClaw集群节点来了。

必备条件

配置允许所有来源,允许外网或者局域网都可以访问

MAC/Linxu用户

openclaw config set gateway.bind "lan"

openclaw config set gateway.controlUi.allowedOrigins '["*"]'

openclaw config set gateway.controlUi.allowInsecureAuth true

openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true

Windows用户

openclaw config set gateway.bind "lan"

openclaw config set gateway.controlUi.allowedOrigins --json '["\"*\""]'

openclaw config set gateway.controlUi.allowInsecureAuth true

openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true

网关龙虾部署:

大龙虾可以养在任何设备,包括云服务器,docker等,这里方便大家理解,我就用Docker的沙盒来演示

一、OpenClaw源码编译Docker镜像

GitHbu源码地址:https://github.com/openclaw/openclaw

  • 修改文件里面的相关内容
scripts/stage-bundled-plugin-runtime-deps.mjs
  • 原始内容
export function stageBundledPluginRuntimeDeps(params = {}) {
  const repoRoot = params.cwd ?? params.repoRoot ?? process.cwd();
  for (const pluginDir of listBundledPluginRuntimeDirs(repoRoot)) {
    const pluginId = path.basename(pluginDir);
    const packageJson = readJson(path.join(pluginDir, "package.json"));
    const nodeModulesDir = path.join(pluginDir, "node_modules");
    removePathIfExists(nodeModulesDir);
    if (!hasRuntimeDeps(packageJson) || !shouldStageRuntimeDeps(packageJson)) {
      continue;
    }
    installPluginRuntimeDeps(pluginDir, pluginId);
  }
}
  • 修改后内容
export function stageBundledPluginRuntimeDeps(params = {}) {
  const repoRoot = params.cwd ?? params.repoRoot ?? process.cwd();
  for (const pluginDir of listBundledPluginRuntimeDirs(repoRoot)) {
    const pluginId = path.basename(pluginDir);
    // 跳过飞书和 Discord 插件的依赖安装
    if (pluginId === "feishu" || pluginId === "discord") {
      console.log(`Skipping runtime deps installation for ${pluginId} plugin`);
      continue;
    }
    const packageJson = readJson(path.join(pluginDir, "package.json"));
    const nodeModulesDir = path.join(pluginDir, "node_modules");
    removePathIfExists(nodeModulesDir);
    if (!hasRuntimeDeps(packageJson) || !shouldStageRuntimeDeps(packageJson)) {
      continue;
    }
    installPluginRuntimeDeps(pluginDir, pluginId);
  }
}

1.源码解压放在飞牛任意文件夹

所有有Docker的设备均这样操作,我这里就飞牛里面的Docker演示

图片[1]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球
图片[2]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

2.登录飞牛SSH构建Docker镜像

在openclaw的根目录执行构建命令

docker build -t openclaw:local -f Dockerfile .
图片[3]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

构建完成,Docker的本地镜像里面可以看到镜像

图片[4]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

二、docker-compose启动

services:
  openclaw:
    image: openclaw:local
    container_name: openclaw
    ports:
      - "18789:18789"
    volumes:
      - openclaw-data:/root/.openclaw
      - /vol1:/vol1    # 映射目录
    environment:
      - OPENCLAW_GATEWAY_TOKEN=vum
      - npm_config_registry=https://registry.npmmirror.com/
    restart: unless-stopped
    command: ["bash", "-c", "openclaw config set gateway.bind 'lan' && openclaw config set gateway.controlUi.allowedOrigins '[\"*\"]' && openclaw config set gateway.controlUi.allowInsecureAuth true && openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true && openclaw gateway run --allow-unconfigured"]
    healthcheck:
      test: ["CMD", "curl", "-s", "--fail", "http://localhost:18789/health", "||", "exit", "0"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    network_mode: bridge

volumes:
  openclaw-data:
图片[5]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球
图片[6]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

部署完成就按照OpenClaw的初始化步骤操作即可,可参考此文章

节点龙虾部署

1.节点龙虾部署

节点龙虾部署这里省略了,比如我这里要控制我的MAC电脑,就在我的MAC点再部署一个龙虾即可

2.配置节点

节点机器安装节点服务

openclaw node install
openclaw node restart

网关和节点交替操作步骤

网关设备

①查询网关设备能否搜索到节点服务器

openclaw devices list

目前只能看到一个本机节点

图片[7]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

②查询网关机器的token

openclaw dashboard
图片[8]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

节点设备

①修改节点设备网关为网关服务器的网关

openclaw config set gateway.auth.token vum

# vum改为你的网关设备的token
图片[9]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

②在节点服务器上运行节点服务

OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 openclaw node run --host 10.10.10.5 --port 18789

# 10.10.10.5 这个地址修改为你的网关服务器的IP
图片[10]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

网关设备

①查询网关设备能否搜索到节点服务器

openclaw devices list
图片[11]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

②网关设备握手节点设备

openclaw devices approve --latest

握手成功

图片[12]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

③查询是否成功握手

openclaw devices list
图片[13]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

节点设备启动

在节点服务器上运行节点服务

OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 openclaw node run --host 10.10.10.5 --port 18789

# 10.10.10.5 这个地址修改为你的网关服务器的IP
图片[14]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

网关设备查看连接状态

openclaw nodes status
图片[15]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

测试控制节点设备

图片[16]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

授权访问

图片[17]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球
图片[18]-干货OpenClaw集群节点,Docker部署及云服务器部署可跳出沙盒控制所有集群设备-VUM星球

关于授权访问

每次提示确认也很麻烦,可以直接全部允许

在节点设备上运行
# 设置 exec 模式为完全允许(不再弹窗)
openclaw config set tools.exec.security "full"
openclaw config set tools.exec.ask "off"

# 重启 gateway 生效
openclaw gateway restart

想恢复安全模式:
openclaw config set tools.exec.security "allowlist"
openclaw config set tools.exec.ask "on-miss"
© 版权声明
THE END
喜欢就支持一下吧
点赞17赞赏 分享
评论 共2条

请登录后发表评论

    暂无评论内容