在虚拟机上快速部署和配置OpenClaw:详细步骤与安全注意事项

本文介绍了在虚拟机上安装OpenClaw的详细步骤与配置,同时着重分析了OpenClaw的安全风险与Token消耗问题,为用户提供参考。

原文标题:本地虚拟机安装OpenClaw

原文作者:牧羊人的方向

冷月清谈:

本文详细介绍了在虚拟机上安装OpenClaw的步骤,包括安装npm、OpenClaw本体,以及配置过程中的各种问题,例如配置DeepSeek API、解决Web界面无法访问等。文章还深入探讨了OpenClaw的使用,特别是其潜在的安全隐患,如“ClawJacked”漏洞、默认配置权限过宽、第三方插件生态的不可控性,以及Tokens的消耗问题。最后,作者提出了对OpenClaw安全性和可控性的保留意见,提醒用户在使用这个强大工具时保持警惕。

怜星夜思:

1、OpenClaw在自动化运维方面有哪些具体的应用场景?除了文中提到的,还有哪些潜在的用途?
2、文章中提到了OpenClaw的安全隐患,你认为应该如何平衡OpenClaw的强大功能和潜在的安全风险?有哪些最佳实践可以降低风险?
3、OpenClaw对Tokens的消耗较高,有哪些方法可以优化Token的使用,降低成本?

原文内容

近一段时间OpenClaw爆火,本文也尝试在虚拟机上安装OpenClaw。

1、安装npm

虚拟机安装Open首先得安装22.0以上版本的npm,此版本的npm不支持在类似centos7的低版本系统中运行。因此先安装centos 8系统,安装步骤可参考参考资料1。

1)安装npm

#cd /usr/local/src
[root@centos8-tango-01 src]# wget https://nodejs.org/dist/v24.13.0/node-v24.13.0-linux-x64.tar.xz

#解压缩
tar -xf node-v24.13.0-linux-x64.tar.xz

#将解压缩的文件放到用户目录/usr/local
mv node-v24.13.0-linux-x64 /usr/local/node

#配置软连接方便进行全局调用
ln -s /usr/local/node/bin/node /usr/bin/node
ln -s /usr/local/node/bin/npm /usr/bin/npm

2)检查node和npm版本

[root@centos8-tango-01 local]# node --version
v24.13.0
[root@centos8-tango-01 local]# npm --version
11.6.2
2、安装openclaw

直接执行命令安装最新版本

# 执行安装
npm install -g openclaw@latest

安装过程中可能会提示一些软件不存在,比如git、cmake等,根据报错提示安装依赖软件

[root@centos8-tango-01 node]# dnf install git -y
[root@centos8-tango-01 node]# git --version
git version 2.27.0

[root@centos8-tango-01 _logs]# dnf install cmake python3-devel –y

安装过程约半个小时,安装完成后检查是否安装成功。

# 配置软连接
sudo ln -s /usr/local/node/bin/openclaw /usr/bin/openclaw
# 查看是否安装成功
openclaw –help

OpenClaw 2026.3.2 (85377a2) — Your .zshrc wishes it could do what I do.

出来如下界面
3、配置OpenClaw

1)手动配置
OpenClaw与常见的应用模板不同,官方提供了若干需用户自行手动配置的步骤,在首次登入服务器后,输入并回车运行如下命令开始配置:

openclaw onboard --install-daemon

运行上面的命令后,出现同意免责声明,将会出现一个问题:是否知晓风险,选择Yes就行。

2)配置模式选择:快速入门

接下来需要选择Onboarding的模式。

第一个是快速启动,后续通过openclaw configure配置信息;第二个是先手动配置。选择QuickStart。

3)模型配置

然后它会让你配置AI大模型。有OpenAI、Qwen、MiniMax、Kimi等,有哪个API接口就选择哪个。如果是DeepSeek的API,选择Custom Provider进行配置,本次选择Deepseek API。

输入DeepSeek API的URL和API key。URL为https://api.deepseek.com/v1、API key为DeepSeek官网生成的sk-xxxx的key(注意不要泄露)、Model ID先选择deepseek-chat(对应Deepseek-V2模型)

配置完成后会校验API key是否可用,如果Token余额不足,会返回402报错。

4)选择频道

配置好模型后,会让你选择聊天频道。选择最后一个,直接跳过。

5)配置Skills

然后会问你要不要配置技能。选YES

再然后,会给你一堆Skills,直接跳过

6)配置Hooks

继续下一步,会问你要不要配置hooks。建议都打开。

可以理解为三个插件:

  • boot-md:启动时自动加载一段markdown文本当默认引导内容。常用于把你的规则、偏好、项目背景在每次启动时塞进去。
  • command-logger:把在Clawdbot里执行过的命令和关键操作记一份日志,方便排查问题和复盘。如果比较在意隐私或不想留痕,就别开它。
  • session-memory:保存会话相关的状态或记忆,让它下次能延续上下文,体验会更连贯。

7)选择交互方式

它问你想要用什么方式孵化你的机器人。选择Web UI方式

图片

8)配置完成后查看openclaw状态

[root@centos8-tango-01 bin]# openclaw status
4、配置web界面

由于是用centos系统虚拟机安装的,在Windows本地访问时不能打开网页界面,需要修改配置。

1)将bind的配置改为lan

修改~/.openclaw/openclaw.json配置文件,把bind的配置改为lan

vi openclaw.json
  "gateway": {
    "mode": "local",
    "auth": {
      "mode": "token",
      "token": "***********"
    },
    "port": 18789,
    "bind": "loopback",  // 改为lan
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    }
  },

保存退出后重启应用

openclaw gateway restart

现在就能在浏览器通过http://你的IP:18789进行访问了。http://192.168.112.145:18789/

但是提示报错信息:origin not allowed (open the Control UI from the gateway host or allow it in gateway.controlUi.allowedOrigins)

2)OpenClaw 的配置文件添加 gateway.controlUi 部分

在配置文件中找到 gateway.controlUi 部分。如果没有,可以手动添加。

  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "lan",
    "controlUi": {
      "allowedOrigins": [
        "http://localhost:18789",
        "http://127.0.0.1:18789",
        "http://192.168.112.145:18789"
      ]
    },

保存文件后,同样需要重启网关服务:openclaw gateway restart

访问报错提示:control ui requires device identity (use HTTPS or localhost secure context)

3)根据提示,带入token访问dashboard

http://192.168.112.145:18789/=xx

进入界面后,进行交互式提问,可以正常工作。比如“OpenClaw进程资源占用情况”,会给出比较详细的进程资源占用分析报告。

其它如接入钉钉或微信,没有使用场景暂时不做深入研究。不过目前来看OpenClaw是相当消耗大模型的Tokens,上面简单的一个任务已经消耗了4w多个Token数。

5、OpenClaw究竟怎么用

虽然已经部署了OpenClaw,但实际上有哪些使用场景却不是特别的明确,而且OpenClaw潜在的安全隐患,还有Tokens的消耗,都对如何利用这个利器持有保留意见。

1)OpenClaw安全隐患

  • "ClawJacked"漏洞:浏览器成为攻击入口。OpenClaw的网关服务默认监听本地地址,并假设所有来自本地的连接都是可信的,因此完全豁免了速率限制。当用户(特别是开发者)在运行OpenClaw的同时,使用浏览器访问了一个恶意网站,该网站中的脚本就能悄无声息地与本地OpenClaw建立WebSocket连接。由于浏览器并不阻止对本地地址的这种连接,整个行为不会触发任何警告。利用本地连接豁免速率限制的漏洞,攻击脚本可以以每秒数百次的速度暴力破解你的OpenClaw管理密码。一旦成功,系统会自动批准这个来自本地的“新设备”,攻击者便获得了与你同等的管理员权限。攻击者可以指令你的AI代理窃取各类服务的凭证和API密钥、翻阅通信软件的历史记录、从连接受控的设备中盗取文件,甚至在被入侵的节点上执行任意系统命令,实现对整个工作站的完全控制。
  • 默认配置权限过宽:OpenClaw为了追求强大的自动化能力,被设计为需要极高的操作系统权限。这种“信任边界模糊”的设计,意味着一旦代理本身被诱导或劫持,它将拥有破坏或泄露你大量敏感数据的入口。
  • 第三方插件生态的不可控性:OpenClaw过度依赖于其插件Skills生态,但这些skills有一部分是存在安全漏洞,甚至是恶意的软件。

2)Tokens消耗

在默认情况下,OpenClaw的每次请求都会全量加载所有工具定义、系统提示词和技能摘要,这导致了大量的Token被“浪费”。一个简单的指令就有可能消耗大量的Tokens,对于高频用户或依赖付费API的用户来说,这是一笔不容忽视的开销。

总之,高度复杂的AI系统可能会展现出开发者未曾预料到的“涌现行为”,也就是使用者或者用户无法完全预测一个长期运行的AI代理在特定情况下会做出什么决定,这种不确定性在自动化操作中可能引发难以预料的后果。对用户而言,发出了一个指令或者任务给到OpenClaw,运行一段时间后它给出了一个任务结果,但在这过程中他做了些什么完全是黑盒的,不在你的掌控范围内,这种不可控就会存在着潜在的风险和安全隐患。

参考资料:

  1. https://blog.csdn.net/solihawk/article/details/158804994
  2. https://blog.csdn.net/qq_31292011/article/details/157899970

与其说是降低风险,不如说是接受这种不确定性吧。毕竟AI的魅力就在于它能带来意想不到的惊喜(也可能是惊吓?)。我觉得可以尝试将OpenClaw应用于一些非核心、低风险的场景,比如辅助文档编写、快速原型设计等。这样即使出现问题,也不会造成太大的损失。当然,前提是要做好数据备份!

Token烧钱啊!我的建议是:1)精简Prompt:Prompt越长,Token消耗越多。尽量用简洁明了的语言描述你的需求。2)控制输出长度:限制OpenClaw的输出长度,避免其生成冗余信息。3)使用更经济的模型:不同的AI模型,Token单价不同。选择适合你需求的,性价比更高的模型。可以考虑使用量化后的模型,通常量化后的模型由于参数更少,推理速度更快,所需的Token也更少。4)缓存结果:对于重复性的任务,可以缓存OpenClaw的输出结果,避免重复计算。5)开启指令合并功能,减少无效消耗

确实,全量加载会造成不必要的Token浪费。一种方法是手动配置OpenClaw,只启用需要的Skills。具体操作如下:

1. 修改openclaw.json 找到skills配置项,只保留需要使用的Skills,删除其他的。
2. 自定义系统提示词: 修改系统提示词,使其更简洁,避免冗余信息。
3. 优化工具定义: 审查工具定义,删除不必要的参数和描述。
4. 使用动态加载: 研究OpenClaw是否支持动态加载Skills或工具,即只在需要时才加载。
5. Skill 裁剪: 如果有开发能力,可以对skills进行裁剪,保留核心功能,去除不必要的部分。

我倒觉得可以借鉴一下软件测试的思路,对OpenClaw进行充分的测试,模拟各种场景,看看它会做出什么样的反应。通过测试,我们可以发现OpenClaw的潜在风险,并提前做好应对措施。

从技术角度来看,可以考虑使用缓存机制,对已经生成的结果进行缓存,避免重复计算。此外,还可以对输入文本进行压缩或摘要处理,减少Token的数量。另外,还可以尝试使用一些开源的Token优化库,提高Token的利用率。

从安全的角度,可以考虑这几个措施:1)限制OpenClaw的访问来源,只允许特定的IP或域名访问;2)启用HTTPS,对通信进行加密;3)定期审查OpenClaw的配置和日志,及时发现异常行为;4)使用强密码,并定期更换。此外,还可以考虑使用一些安全工具,如入侵检测系统(IDS)和安全信息和事件管理系统(SIEM),对OpenClaw进行监控和保护。

对于普通用户,如果想要体验AI自动化,可以考虑以下几个方向:

1. IFTTT (If This Then That):IFTTT 是一款老牌的自动化工具,通过简单的“如果…那么…”逻辑,可以将不同的应用和服务连接起来。虽然功能不如OpenClaw强大,但易于上手,适合自动化一些简单的任务,例如自动保存社交媒体内容、同步日历等。
2. Zapier:Zapier 类似于 IFTTT,但支持更多的应用和服务,也提供了更高级的自动化功能。Zapier 的界面也比较友好,适合没有编程基础的用户。
3. Microsoft Power Automate:如果你的工作主要围绕微软生态,可以考虑使用 Power Automate。它可以自动化 Office 365 应用程序之间的工作流程,例如自动处理邮件、创建任务等。
4. AI 助手(如 Google Assistant、智能音箱):这些 AI 助手也可以执行一些简单的自动化任务,例如设置提醒、播放音乐、控制智能家居设备等。虽然功能有限,但使用起来非常方便。

总的来说,选择哪款工具取决于你的具体需求和技术水平。可以先尝试几款不同的工具,看看哪款最适合你。

确实,这种本地WebSocket连接的风险挺隐蔽的。我觉得可以从网络层面入手,比如使用防火墙限制对OpenClaw端口的访问,只允许特定的IP地址连接。或者在OpenClaw的配置文件中增加更严格的来源验证机制。

除了“ClawJacked”漏洞,我认为OpenClaw还存在以下潜在安全风险:
1. 供应链安全:OpenClaw依赖大量的第三方库和插件,这些依赖项可能存在漏洞或恶意代码。
2. API密钥泄露:如果OpenClaw的API密钥被泄露,攻击者可以利用你的AI代理进行恶意活动。
3. 数据泄露:OpenCalw可能会访问你的敏感数据,如果存储或传输不当,可能会导致数据泄露。

为了加强安全防护,开发者可以采取以下措施:
* 定期更新OpenClaw及其依赖项,修复已知漏洞。
* 使用安全的API密钥管理方案,例如使用环境变量或密钥管理服务。
* 对OpenClaw访问的数据进行加密,并限制其访问权限。
* 加强对OpenClaw行为的监控和审计,及时发现异常行为。

省Token?那必须是能省则省!我有个骚操作,就是把OpenClaw当成“包工头”,只让它负责任务调度,具体的计算交给其他更便宜的AI模型。这样既能享受OpenClaw的便利性,又能降低Token成本,一举两得!至于开源替代品,我最近在研究一个叫“Moe”的项目,感觉还不错,大家可以了解一下。

我觉得可以从权限控制入手。OpenClaw默认权限过高,可以考虑采用最小权限原则,只授予AI代理完成任务所需的最低权限。同时,对OpenClaw可以访问的资源进行严格限制,避免其接触敏感数据。

降低OpenClaw的Token成本,我认为可以从以下几个方面入手:
1. 精简Prompt:优化你的Prompt,避免冗余信息,让AI代理更好地理解你的意图。
2. 选择合适的模型:不同的AI模型,Token消耗和性能表现不同,选择性价比更高的模型。
3. 使用缓存机制:对于重复性的任务,可以考虑使用缓存来避免重复计算。

至于开源替代方案,可以关注一下Rasa、Botpress等,虽然功能不完全相同,但也可以实现类似的任务。

从开发者的角度来说,OpenClaw这类工具的安全问题,很大程度上取决于使用者是否了解其背后的原理。比如,配置权限时,要清楚每个权限授予后可能带来的影响。从用户角度,我觉得可以理解为,使用OpenClaw就像给一个实习生分配任务,既要充分授权,也要时刻监督,避免ta犯错。定期检查日志,监控Token消耗情况,都是很好的习惯。

我认为可以从业务角度出发,优化OpenClaw的使用方式。比如,尽量避免一次性执行复杂的任务,可以将任务分解为多个简单的子任务。这样可以减少每次请求的 Tokens 消耗。另外,定期清理 OpenClaw 的会话记录,也可以减少 Tokens 的占用。

从更专业的角度来看,OpenClaw可以应用于知识管理、自动化运维、安全事件响应等领域。例如,在知识管理方面,OpenClaw可以自动整理、分类文档,并根据用户的问题快速检索相关信息。在自动化运维方面,OpenClaw可以监控服务器状态,并在出现异常时自动执行修复操作。在安全事件响应方面,OpenClaw可以分析日志数据,识别潜在的安全威胁,并采取相应的防御措施。

关于Token优化,我有一些小技巧:

* 精简Prompt:Prompt越长,Token消耗越多。尽量用简洁明了的语言描述你的需求,避免冗余信息。
* 限制输出长度:明确指定输出结果的长度,例如“请用50字概括文章内容”。
* 使用摘要:对于长文本,先进行摘要,再将摘要作为Prompt输入给OpenClaw。
* 批量处理:将多个任务合并成一个批次进行处理,可以减少重复加载工具定义和系统提示词的次数。

此外,还可以考虑使用一些Token压缩技术,例如将文本压缩后再输入给OpenClaw。不过需要注意的是,不同的模型对Token压缩的支持程度可能不同,需要进行测试。

嘿嘿,我来分享一个“歪门邪道”的方法:使用魔法优惠券

很多云服务商都会提供各种各样的优惠券,例如新用户优惠券、学生优惠券等等。可以多关注一下这些优惠活动,薅一下羊毛。

当然,这种方法只能短期内降低成本,长期来看还是要靠技术手段来优化Token使用。

另外,还可以考虑使用开源模型,例如LLaMA、ChatGLM等等。这些模型虽然可能不如商业模型那么强大,但胜在免费,可以大大降低成本。

省Token?简单!

1. 当个葛朗台,抠字眼: Prompt 写的越短越好,一个字都别多!能用缩写就用缩写,能用符号就用符号。
2. 能白嫖就白嫖,不用API: 实在不行,自己写个小爬虫,从网上搜答案。
3. 实在不行,换个AI: 别死磕DeepSeek,看看有没有更便宜的AI。

记住,省钱才是硬道理!

安全?这东西就像内裤,平时不用,关键时刻掉链子!

我的建议是:

1. 别怕麻烦,多做配置: OpenClaw默认配置肯定不安全,要花时间研究配置文档,把权限、网络、插件都好好配置一下。
2. 时刻关注,及时更新: OpenClaw有bug是正常的,发现bug及时更新,别拖着。
3. 出了事儿,别慌张: 真要被黑了,第一时间断网止损,然后找专业人士帮忙。

记住,安全是相对的,没有绝对的安全。只要你尽力了,就算被黑了,也不用太自责。