在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_64或ARM均可,磁盘选择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。请参考官方文档这里获取安装包:
本文以使用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_ID和YOUR_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