在AWS EC2 Ubuntu上部署OpenClaw (原Clawdbot/Moltbot) 并对接飞书机器人

本文介绍了如何在AWS EC2 Ubuntu上24.04系统上部署OpenClaw小龙虾🦞,通过Bedrock调用Claude模型,配置飞书机器人实现长连接对接,打造24小时在线飞书助手。

注:本文更新到openclaw-2026.4.9版本,更新了配置AWS Bedrock 认证方法、更新了飞书插件配置方法。

一、背景

Openclaw是最近火起来的个人助手agent,经历了改名风波抛弃了Clawdbot/Moltbot的名字,正式定名Openclaw。最近网上有许多在Mac上部署Openclaw的文章,AWS官方公众号:

这篇文章 https://mp.weixin.qq.com/s/0k62KUk6wveo1OEt72xI9Q

也发表了在海外AWS云上Mac Mini中部署Openclaw的方法。考虑到成本节约(钱包),这里不使用Mac Mini,本文介绍如何在AWS EC2 Linux上部署一个Openclaw,并通过飞书机器人实现与飞书对接,实现一个always在线的飞书助手。

关于Openclaw的技术本身,在2026年2月这个时刻看来Openclaw本身并未发明新的技术,也没有发明新的理念,他火起来的原因之一是以较低的门槛高度整合了当前社区和生态体系中的多个工具,尤其是集成了欧美主流的即时通信软件的插件,包括苹果iMessage、Whatsapp、Telegram、Singal等。此外在MacOS上整合了许多Mac原生能力,具备了快速接收任务、分派任务、监督多个任务执行的能力。Openclaw通过MCP、Skill等2026年已经很成熟的协议与外部第三方工具互动,用户可在各种场景下利用Openclaw帮助安排工作、监控执行进度,出现了许多有趣玩法,进一步提高了Openclaw知名度。Openclaw在Github开源,可快速部署上手。国内许多技术社区都可以找到丰富的图、文、视频教程。

Openclaw本身是agent工具,需要依赖外部大语言模型工作,开放的体系使得他可以调用OpenAI GPT、Anthropic Claude、Qwen、Deepseek等国内外各种模型,并不局限在任何一个模型供应商或云厂商,用户选择模型的范围几乎无限大。Openclaw被设计为长期运行一直在线(24小时)的个人助手,对云端模型调用消耗Token是比较大的。如果将Openclaw放在Mac Mini上运行,不仅可以与苹果原生生态许多APP互动,还可以借助Mac系列M处理器+统一内存硬件组合,在Mac Mini本地运行特定尺寸的模型完成所有推理,由此完全不需要消耗云端模型的Token,实现完全的Token自由。

二、在Ubuntu上部署Openclaw

1、准备EC2操作系统环境

为了搭建这个环境,需要在云端一个Linux Ubuntu 24.04操作系统,建议部署在东京(ap-northeast-1)或者新加坡(ap-southeast-1)区域,因为距离中国大陆最近,从国内连接网络延迟最低。硬件架构选择x86_64ARM均可,磁盘选择30GB gp3,网络选择默认VPC和具有Public IP(用于外网访问),保存好SSH密钥,安全规则组对外Inbound入站不开放任何端口,这样将显著提升安全,避免密码过于简单被侵入。

启动EC2完毕后,使用AWS控制台的Connect连接功能,选择Session Manager登陆到这个EC2。

首先升级操作系统:

sudo apt update
sudo apt upgrade -y
sudo reboot

安装Node软件包:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

如果不想重启shell的话,运行如下命令完全加载环境变量:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

继续安装:

nvm install 24
npm install -g npm

检测安装好的版本:

node -v
npm -v

需要确认返回结果node>=24, npm>=11。

准备工作完毕。

2、生成Bedrock API Key

使用Openclaw需要调用模型,要求配置一个可以访问bedrock认证方式。这里选择Bedrock API Key的方式,而不是传统的AWS IAM User Access Key/Secret Key这种方式。操作方法是:

  • 登陆到AWS控制台,切换到要使用模型的region
  • 进入Bedrock服务,点击左侧的Bedrock API Key,生成一个单一密钥的API Key。

保存好密钥,当前界面创建完毕后,密钥明文只显示一次,以后不再显示明文。忘记密钥的话,只能删除重新创建。

3、在EC2 Ubuntu上为后台服务配置Bedrock API Key环境变量

上一步创建的Bedrock API Key,需要配置到当前shell的环境变量、以及后台服务的环境变量中。二者缺一不可。

配置到当前环境变量中:

vim ~/.bashrc

s 加入如下两行:

export AWS_BEARER_TOKEN_BEDROCK=YOUR_BEDROCK_API_KEY
export AWS_REGION=us-east-1

然后执行如下命令source ~/.bashrc。重新加载环境变量。

配置到后台服务命令如下:

# 创建目录
mkdir -p ~/.config/systemd/user/openclaw-gateway.service.d

# 新建服务环境变量
cat > ~/.config/systemd/user/openclaw-gateway.service.d/aws-env.conf << 'EOF'
[Service]
Environment="AWS_BEARER_TOKEN_BEDROCK=YOUR_BEDROCK_API_KEY"
Environment="AWS_REGION=us-east-1"
EOF

4、设置运行Openclaw所需要的Ubuntu环境变量

在EC2的Ubuntu Linux上安装,必须设置环境变量如下,否则后续服务启动失败。手工执行如下命令设置为当前Shell设置:

unset SUDO_USER 
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
export DBUS_SESSION_BUS_ADDRESS="unix:path=$XDG_RUNTIME_DIR/bus"

接下来设置属于用户的后台服务自启动。如果不执行这一步,后续OS重启时候,Openclaw不会自动启动。

sudo loginctl enable-linger $(whoami)

5、安装Openclaw并初始化

安装并执行初始化。

npm install -g openclaw@latest

等待几分钟安装完毕。执行openclaw即可启动。

Openclaw是安装到/home/ubuntu/.nvm/versions/node/版本号/bin目录下的,根据您Node版本有所不同,如果路径不正确,请执行如下命令设置路径。

export PATH="/home/ubuntu/.nvm/versions/node/$(node -v)/bin:$PATH"

Openclaw初始化会询问一系列配置,如果答错的话,后续需要通过配置文件修改较为麻烦,因此这里谨慎看清选项再回答。执行如下命令启动配置。

openclaw onboard --install-daemon

初始化向导界面视角如下。

初始化选项如下(使用键盘上下箭头移动光标):

  • I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue? 开头的安全提示,选Yes确认。
  • Setup mode? 不要选QuickStart,而是选Manual手动配置。
  • What do you want to set up? 选Local gateway (this machine)
  • Workspace directory? 工作目录默认已经显示为/home/ubuntu/.openclaw/workspace直接按回车即可。
  • Model/auth provider? 这里向下滚动菜单,选最后一项Skip for now。注意这里一定不要选别的模型,这些选项他们都是模型原厂SaaS方式,并不是通过Amazon Bedrock来调用。

如下截图。

继续选择更多选项:

  • Filter models by provider? 选amazon-bedrock
  • Default model? 选amazon-bedrock/us.anthropic.claude-sonnet-4-6。如果您希望选择其他版本的模型,可以用键盘上下键切换。
  • Gateway port? 默认已经有18789端口了,直接按回车继续。
  • Gateway bind? 默认是Loopback (127.0.0.1),直接按回车继续。这里一定不要绑定在0.0.0.0,这样很可能被从公网访问和扫描,对于密码较弱的情况,会被攻击。
  • Gateway auth? 默认是Token (Recommended default (local + remote))。直接按回车。
  • Tailscale exposure? 这项是外部映射和内网暴露工具,选择默认Off (No Tailscale exposure)即可。
  • How do you want to provide the gateway token? 选择第一项Generate/store plaintext token表示自己定义密钥。
  • Gateway token (blank to generate)? 此时手工设置一个比较复杂的比较长token并保存好,输入完毕按回车。
  • Configure chat channels now? 是否配置聊天工具,默认是Yes,这里选不配置,光标移动到No然后按回车。
  • Web search - Search provider? 这里选Skip for now,暂时不配置。
  • Skills status - Configure skills now? (recommended)? 是否配置Skill技能,这里虽然默认是Yes,移动光标选No,然后按回车继续。
  • Configure plugins (select to set up now, or skip) 是否配置plugin,这里选择Skip for now,方法是按空格键选中当前选项,然后按回车继续。
  • Enable hooks? 这里选择Skip for now,方法是按空格键选中当前选项,然后按回车继续。
  • Enable bash shell completion for openclaw?,这里选No
  • How do you want to hatch your bot? 选现在不开启对话Do this later

配置完成。界面返回shell。如下截图。

6、配置Bedrock的认证

准备如下一段配置文件(需要的话可以替换其中的region和模型id)

  "models": {
      "providers": {
        "amazon-bedrock": {
          "baseUrl": "https://bedrock-runtime.us-east-1.amazonaws.com",
          "api": "bedrock-converse-stream",
          "auth": "aws-sdk",
          "models": [
            {
              "id": "us.anthropic.claude-sonnet-4-6",
              "name": "Claude Sonnet 4.6",
              "reasoning": true,
              "input": ["text", "image"],
              "contextWindow": 1000000,
              "maxTokens": 8192
            }
          ]
        }
      }
    },

编辑配置文件

vim ~/.openclaw/openclaw.json

将其加入~/.openclaw/openclaw.json,在Agent配置段后边,在Gateway配置段前边。注意缩进的对齐。效果如下:

保存退出。然后重启服务:

systemctl --user daemon-reload && systemctl --user restart openclaw-gateway.service

注意:以上重启服务命令的前提是前文标题4、设置环境变量中设置的环境变量正确,否则这一步会报错。

验证初始化成功,确认可用模型:

openclaw models list

返回结果如下:

ubuntu@openclaw:~$ openclaw models list

🦞 OpenClaw 2026.4.9 (0512059) — Self-hosted, self-updating, self-aware (just kidding... unless?).

Model                                      Input      Ctx      Local Auth  Tags
amazon-bedrock/us.anthropic.claude-sonn... text+image 977k     no    yes   default,configured
ubuntu@openclaw:~$ 

注意以上返回结果,在列出的模型这里,Auth部分一定要看到Yes才可以继续。由此配置完成。

8、将Openclaw加入自动启动

执行如下命令:

systemctl --user enable openclaw-gateway
systemctl --user is-enabled openclaw-gateway
sudo loginctl enable-linger ubuntu

这几条命令的前提是前文标题4、设置环境变量中设置的环境变量正确,否则这一步会报错。

设置成功后,Openclaw就可以随EC2重启而自动启动了。

三、访问Openclaw

1、使用TUI(Terminal UI)图形界面和Openclaw聊天

TUI 连接 gateway 需要先配对设备。执行如下命令:

openclaw devices list

可以看到有没有配对的设备。执行如下命令完成配对。

openclaw devices approve YOUR_DEVICE_ID

连接成功后,运行openclaw tui,即可在命令行下的聊天窗口发起对话,并得到模型的反馈。如下截图。

2、启动SSH转发到本地并使用WEB界面登陆

为了安全起见,我们回到开发者本机来做端口转发。

以下命令在开发者本机进行。安装AWSCLI的session-manager的plugin。请参考官方文档这里获取安装包:

https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html

本文以使用M1处理器(ARM架构)的Mac电脑为例:

curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
sudo installer -pkg session-manager-plugin.pkg -target /
sudo ln -s /usr/local/sessionmanagerplugin/bin/session-manager-plugin /usr/local/bin/session-manager-plugin

安装完毕。

在EC2控制台上查看下当前安装Openclaw的EC2的区域和ID,然后构建如下命令。编辑本机的shell环境变量文件,例如bash就是~/.bashrc,加入如下一行:

alias openclaw="aws ssm start-session --target i-xxxxxxxxx --region ap-northeast-1 --document-name AWS-StartPort ForwardingSession --parameters '{\"portNumber\":[\"18789\"], \"localPortNumber\":[\"18789\"]}'"

重新加载环境变量:

source ~/.bashrc

现在执行运行openclaw即可将安装Openclaw的EC2的18789端口转发到本地的18789。

启动浏览器,访问http://127.0.0.1:18789,然后输入初始化向导时候设置的token,点击connect即可连接到Openclaw。

现在即可通过Web界面与Openclaw聊天。

四、Openclaw对接到飞书作为机器人与用户交互

注意:

  • 飞书机器人要想被外部应用调用,必须进行版本发布操作。如果您是飞书企业用户,这一步需要您的企业管理员审批。因此请咨询您的飞书管理员您是否可以发布飞书机器人。
  • 如果您是飞书个人用户,那您创建的飞书机器人只可以和自己说话,无法添加到与别人的对话中。与其他人互动的飞书机器人要求必须是企业账号、且完成企业营业执照审核才可以。本文演示的飞书机器人在飞书个人版上测试通过。

1、在Openclaw的EC2上安装飞书channel插件

从2026年2月起新安装的Openclaw,已经内置了飞书插件了。无须手工安装。

2、在飞书平台创建新的机器人、设置能力、获取app id和key id

进入飞书开放平台:https://open.feishu.cn/app,点击创建企业应用按钮。如下截图。

在创建自定义应用的弹出对话框内,输入名称。点击创建按钮。如下截图。

在向导创建完成的时候,会自动切换到能力界面,这里点击第一项,这个自定义应用的能力是机器人。如下截图。

接下来点击左侧的凭证与基础信息菜单,从右侧复制下来app id和key id两个值,后续代码将会使用。如下截图。

获得app id和key id步骤完成。

3、配置授权机器人可以做的行为

继续配置机器人。在左侧菜单开发配置下,点击权限管理。点击右侧的开通权限按钮。如下截图。

在开通权限对话框内,搜索关键字,找到如下权限后,点击确认开通权限按钮。如下截图。

要开通的权限列表包括:

权限 范围 说明
im:message 消息 发送和接收消息
im:message:update 编辑 更新/编辑已发送消息
im:message:readonly 读取 获取历史消息
im:message:recall 撤回 撤回已发送消息
im:message:send_as_bot 发送 以机器人身份发送消息
im:message.group_at_msg:readonly 群聊 接收群内 @机器人 的消息
im:message.group_msg 群聊 读取所有群消息(敏感)
im:message.p2p_msg:readonly 私聊 读取发给机器人的私聊消息
im:message.reactions:read 表情 查看消息表情回复
im:resource 媒体 上传和下载图片/文件
contact:user.base:readonly 用户信息 获取用户基本信息(用于解析发送者姓名,避免群聊/私聊把不同人当成同一说话者)

都添加好了后界面如下截图。

至此权限配置完成。

4、用测试代码建立长连接

接下来要测试应用程序和飞书后台API的链接特性。只有外部应用使用API连接成功,才可以继续在飞书开放平台上配置事件功能。如果这里没有先进行连接,那么后续配置会提示尚未连接。

在运行Openclaw的Linux上安装Python的包管理工具uv,并安装飞书API包,然后初始化Python环境。执行如下命令:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv init .
uv venv
source .venv/bin/activate
uv add lark-oapi

创建lark.py代码,内容如下:

import lark_oapi as lark

def do_p2_im_message_receive_v1(data: lark.im.v1.P2ImMessageReceiveV1) -> None:
    print(f'[ receive ], data: {lark.JSON.marshal(data, indent=4)}')

event_handler = lark.EventDispatcherHandler.builder("", "") \
    .register_p2_im_message_receive_v1(do_p2_im_message_receive_v1) \
    .build()

cli = lark.ws.Client("YOUR_APP_ID", "YOUR_APP_SECRET",
                     event_handler=event_handler,
                     log_level=lark.LogLevel.DEBUG)
cli.start()

替换上文中的YOUR_APP_IDYOUR_APP_SECRET为真实值。然后执行如下命令运行程序:

uv run lark.py

连接成功返回结果如下:(返回信息已脱敏)

[Lark] [2026-02-11 08:46:01,055] [INFO] connected to wss://msg-frontier.feishu.cn/ws/v2?fpid=111&aid=11111&device_id=1111111111111&access_key=1111111111111111111111111&service_id=1111111111118&ticket=11111111111111111111111111111111111111111 [conn_id=111111111111111]
[Lark] [2026-02-11 08:46:01,056] [DEBUG] ping success [conn_id=1111111111111111]
[Lark] [2026-02-11 08:46:01,305] [DEBUG] receive pong [conn_id=1111111111111111]

连接成功后,先不要停止程序,而是保持程序打开状态,回到飞书控制台继续配置。

5、配置事件长连接

接上一步,确认python程序打开状态,也就是长连接一直活跃。然后在飞书开放平台左侧,点击事件与回调菜单,在右侧点击标签页事件配置,点击下方的订阅方式。如下截图。

在订阅方式位置,选择使用长连接接受事件(推荐),然后点击保存。如下截图。

此时需要确保上一步的Python程序是在活跃中,即可完成配置。

6、配置事件订阅

继续在刚才事件与回调界面,配置完毕长连接后,点击右下角的添加事件。如下截图。

在添加事件的对话框中,通过关键字搜索,添加如下事件。如下截图。

事件 说明
im.message.receive_v1 接收消息(必需)
im.message.message_read_v1 消息已读回执
im.chat.member.bot.added_v1 机器人进群
im.chat.member.bot.deleted_v1 机器人被移出群

即可完成事件配置。

7、向飞书企业管理员申请发布机器人

注意:飞书机器人要想被外部应用调用,必须进行版本发布操作。如果您是飞书企业用户,这一步需要您的企业管理员审批。如果您是飞书个人用户,那您创建的飞书机器人只可以和自己说话,无法添加到与别人的对话中。与其他人互动的飞书机器人要求必须是企业账号、且完成企业营业执照审核才可以。

飞书机器人最后一步,就是提交发布申请。进入左侧应用发布菜单,点击版本管理与发布。在右侧点击发布版本,然后填写表单。注意版本号必须是x.x.x的格式。如下截图。

在发布申请下方,可选择向整个组织发布还是只向部分成员发布,可选是否对外共享,这都需要管理员审批。最后填写完整的申请理由信息。最后点击保存按钮就是提交申请了。如下截图。

等待您的管理员完成审批即可。

8、在Openclaw上配置飞书榧树

Openclaw的飞书执行如下命令做配置:

# 配置飞书
openclaw config set channels.feishu.enabled true                                               
openclaw config set channels.feishu.accounts.main.appId "cli_xxxxxxxxxxxx"                     
openclaw config set channels.feishu.accounts.main.appSecret "xxxxxxxxxxxxxxxxxxxxxxxx"         
openclaw config set channels.feishu.accounts.main.name "My AI assistant"

# 配置完毕后,重启服务
systemctl --user daemon-reload && systemctl --user restart openclaw-gateway.service

配置完成。

9、批准谁可以和飞书对话

Openclaw的安全功能越来越完善,和飞书bot对话需要经过批准。如果只是本人使用,可以放开批准的限制。

openclaw config set channels.feishu.dmPolicy "open"
openclaw config set channels.feishu.allowFrom '["*"]'

# 配置完毕后,重启服务
systemctl --user daemon-reload && systemctl --user restart openclaw-gateway.service

10、飞书对话测试

在飞书对话中,搜索你的机器人的命令,即可找到他。如下截图。

和他开始对话吧!

至此Openclaw+飞书对接完成。

五、参考文档

AWS官方公众号:在云端Mac Mini上部署Openclaw

https://mp.weixin.qq.com/s/0k62KUk6wveo1OEt72xI9Q

Openclaw的飞书配置说明

https://github.com/m1heng/clawdbot-feishu

一文完全搞懂 Clawd Bot(Moltbot/OpenClaw)附飞书对接指南!

https://www.feishu.cn/content/article/7602519239445974205

保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手

https://developer.aliyun.com/article/1709615


最后修改于 2026-04-10