小白向:腾讯云CVM安全组开放18789端口,外网访问OpenClaw后台完整实操指南
前言:为什么你的OpenClaw后台外网访问不了?
很多刚刚接触腾讯云CVM的小白用户,满心欢喜地在服务器上部署了OpenClaw这个强大的AI助手框架,却在最后一步卡住了——明明服务已经启动,浏览器里输入http://你的公网IP:18789,页面就是死活打不开。这时候你可能会怀疑是不是OpenClaw装错了,是不是命令敲错了,甚至是不是服务器本身有问题。
其实绝大多数情况下,问题都出在一个被忽视的环节上——安全组。腾讯云CVM默认的网络安全策略相当严格,如果你不主动在安全组里“开个门”,外部流量根本进不来。这就好比你把房子装修得再好,大门锁着,客人也进不来。
这篇文章就是专门写给小白看的。我会从最基础的概念讲起,一步一步带你完成安全组配置、OpenClaw部署、外网访问验证的全过程。全文超过6000字,所有命令都可以直接复制粘贴,保证你跟着做就能成功。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
第一章:理解安全组——CVM的“智能门禁系统”
1.1 安全组到底是什么?
在动手配置之前,有必要先搞清楚安全组是什么。腾讯云官方对安全组的定义是:一种有状态的包过滤虚拟防火墙。听起来很专业,但其实可以用一个非常生活化的比喻来理解。
把安全组想象成你家小区的门禁系统。入站规则就像是“访客进入规则”——快递员可以进、外卖员可以进、陌生人不能进。出站规则则是“住户外出规则”——你家里的每个人都可以自由出门。安全组就是这样一个“网络门禁”,控制着所有进出你CVM的网络流量。
安全组有几个关键特性需要了解:
- 有状态(Stateful):这是安全组最贴心的设计。安全组会自动“记住”由你的CVM主动发起的出站连接,当这些连接的返回数据包回来时,即使入站规则里没有明确允许,安全组也会自动放行。就像门卫记得你早上出门了,晚上你回家时自然让你进,不用再查一遍身份证。
- 免费使用:腾讯云的安全组功能是完全免费的。
- 实例级别控制:安全组直接作用于你的CVM实例层面,控制粒度非常精细。
1.2 入站规则与出站规则
安全组包含两种规则方向:
- 入站规则(Inbound Rules):控制哪些外部流量可以访问你的服务器。比如你允许80端口的HTTP请求进来,或者允许18789端口的OpenClaw请求进来,都是在这里配置。
- 出站规则(Outbound Rules):控制你的服务器可以访问哪些外部资源。比如允许服务器访问外网下载软件、更新系统等。
对于我们要实现的“外网访问OpenClaw后台”这个目标,核心操作就是配置入站规则,放行18789端口的TCP流量。
1.3 安全组的默认策略
当你创建一个新的安全组时,腾讯云会给它一个默认策略。对于Linux CVM,可能会默认放行SSH的22端口(从任何IP地址访问)和一些必要的ICMP协议。对于Windows CVM,则是RDP的3389端口。
但请注意:除了这些极少数默认放行外,其他的入站流量默认是全部拒绝的。这就是“最小权限”原则的体现——默认什么都不让进,你需要什么就手动开什么。而出站流量默认通常是全部允许的,因为服务器需要向外获取更新、连接API等。
这个默认策略意味着:就算你在CVM内部把OpenClaw服务跑起来了,监听在18789端口上,如果安全组的入站规则没有明确放行18789端口,外网流量根本到不了你的服务。
第二章:准备工作——确认你的CVM环境
2.1 确认CVM实例状态
在配置安全组之前,先确认你的CVM实例处于正常运行状态:
- 登录腾讯云控制台,进入云服务器CVM页面。
- 确认你的CVM实例“运行状态”显示为“运行中”。
- 记下你的CVM公网IP地址(后面访问OpenClaw后台要用)。
- 确认你已知道CVM的登录方式(SSH密钥对或密码)。
2.2 确认操作系统与网络环境
OpenClaw对操作系统有一定要求。根据官方文档,建议使用Linux系统(Ubuntu 20.04+或CentOS 8+),内核版本≥5.4。如果你用的是Windows系统,需要WSL2支持。
另外,OpenClaw部署需要Node.js环境(建议LTS版本)和PNPM包管理器。这些在后面的安装步骤中会一并处理。
第三章:安全组配置——开放18789端口
3.1 找到你的安全组
安全组配置有两种入口方式:
方式一:通过CVM实例进入
- 登录腾讯云控制台,进入云服务器CVM页面。
- 找到你的CVM实例,点击实例ID进入详情页。
- 在详情页中点击“安全组”选项卡。
- 你会看到当前绑定在该实例上的安全组列表。
方式二:直接进入安全组管理页面
- 登录腾讯云控制台。
- 在左侧导航栏中点击“安全组”。
- 进入安全组管理页面。
- 选择正确的地区(Region),找到你的安全组。
建议使用方式一,因为直接从实例进入可以确保你操作的是该实例绑定的安全组,不会配错对象。
3.2 添加入站规则
找到安全组后,点击操作列中的“修改规则”。在安全组规则页面,选择“入站规则”页签,然后点击“添加规则”。
在弹出的添加规则窗口中,按以下参数配置:
| 配置项 | 填写内容 | 说明 |
|---|---|---|
| 类型 | 自定义 | 也可以选择系统模板,但自定义最灵活 |
| 来源 | 0.0.0.0/0 | 允许所有IP访问(公网全放行) |
| 协议端口 | TCP:18789 | 协议选TCP,端口填18789 |
| 策略 | 允许 | 必须是“允许”,不能是“拒绝” |
关于“来源”字段的说明:
0.0.0.0/0表示允许所有IPv4地址访问。这是最开放的配置,适合小白快速测试。- 如果你只希望特定IP或IP段能访问,可以填写具体的CIDR地址,比如
203.0.113.0/24。生产环境建议这样做。 - 也可以填写另一个安全组的ID,实现安全组之间的互通。
关于“协议端口”的说明:
- 端口字段允许输入一个单独端口号(如18789),或者用减号分隔的端口范围(如8000-8010)。
- 只有协议字段是TCP或UDP时,端口字段才有效。
配置完成后点击“完成”或“保存”。安全组规则保存后立即生效,无需重启CVM。
3.3 验证安全组配置
添加完规则后,可以在入站规则列表中看到新加的 TCP:18789 规则。确认策略列显示为“允许”,来源列显示为 0.0.0.0/0 或你指定的IP段。
如果列表中有多条规则,请注意安全组规则的匹配顺序是从上到下,位置越靠上优先级越高。如果上面有一条拒绝规则匹配了你的流量,下面即使有允许规则也不会生效。建议将18789的允许规则放在靠前的位置。
3.4 安全组配置的常见错误
根据大量用户的踩坑经验,以下是安全组配置中最容易犯的错误:
- 错误1:只配置了出站规则忘记配置入站规则——外网访问需要的是入站规则,别搞反方向。
- 错误2:协议选错了——OpenClaw的18789端口是TCP协议,别选成UDP。
- 错误3:端口号填错了——确认是18789,不是18788也不是19789。
- 错误4:策略选了“拒绝”——要选“允许”,选“拒绝”等于没开。
- 错误5:配置了安全组但忘记绑定到实例——安全组规则配得再好,不绑定到CVM实例也不生效。
- 错误6:图省事把所有端口全开放——安全组形同虚设,服务器处于“裸奔”状态。只开放业务必需的端口。
第四章:OpenClaw部署——在CVM上安装AI助手
4.1 OpenClaw是什么?
OpenClaw(曾用名Clawdbot)是一款开源的个人AI助手框架,支持多模型接入、自动化任务处理和自定义插件开发。它可以部署在你的个人服务器上,成为一个7×24小时在线的AI智能体,用于信息检索、任务自动化、定时执行、文件处理、内容生成等场景。
OpenClaw的Web控制台默认监听18789端口,这就是我们需要开放这个端口的原因。
4.2 环境要求
在开始安装之前,确认你的CVM满足以下最低要求:
- 操作系统:Ubuntu 20.04+ / CentOS 8+ / Alibaba Cloud Linux 3
- CPU:最低2核,推荐2核4GB配置
- Node.js:22.x及以上版本
- 网络:需开放18789端口(Web控制台)
4.3 安装Node.js环境
如果你的CVM还没有Node.js环境,先安装它。以Ubuntu系统为例:
# 更新软件包列表
sudo apt update
# 安装Node.js 22.x(使用NodeSource官方源)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# 验证安装
node --version
npm --version
安装完成后,node --version 应该显示 v22.x.x 或更高版本。
4.4 安装OpenClaw
OpenClaw提供多种安装方式:脚本安装器(最快)、全局CLI安装、从源代码构建。对于小白用户,推荐使用脚本安装器,这是官方最简单的方式,会自动检测操作系统、安装Node.js(如果缺失),并运行配置向导。
以Linux系统为例,执行以下命令:
# 下载并运行安装脚本
curl -fsSL https://example.com/install-proxy | bash -s -- --beta
(注:上述链接为示例,实际请参考OpenClaw官方文档获取最新安装命令)
安装完成后,运行配置向导:
# 运行配置向导
openclaw onboard
配置向导会交互式地询问你一些配置选项:
- 模型选择:选择你想要的默认模型(如llama3-7b)
- 存储路径:模型文件存储位置(默认 ~/.openclaw/models)
- 网关端口:保持默认的18789
4.5 启动OpenClaw网关服务
配置完成后,启动网关服务:
# 启动网关服务(指定端口和日志级别)
openclaw gateway --port 18789 --verbose
执行后系统会自动完成以下操作:
- 初始化配置目录(默认 ~/.openclaw)
- 生成TLS证书(用于安全通信)
- 启动RESTful API服务(监听18789端口)
你也可以将OpenClaw安装为守护进程,实现开机自启:
# 安装守护进程
openclaw onboard --install-daemon
这会生成 systemd 用户服务配置文件 ~/.config/systemd/user/openclaw-gateway.service。
第五章:关键一步——让OpenClaw监听公网
5.1 为什么安全组开了还是访问不了?
很多小白用户在这里会遇到一个极其困惑的问题:安全组明明已经配好了18789端口的入站规则,但浏览器访问 http://公网IP:18789 还是打不开。这时候千万别急着怀疑安全组配置错了——问题很可能出在OpenClaw本身的监听设置上。
OpenClaw网关默认只监听 127.0.0.1:18789(本地回环地址)。这意味着OpenClaw服务只在CVM内部“听得到”,外网流量根本进不来。安全组是在CVM的“大门口”放行了18789端口的流量,但OpenClaw服务自己在“房间里面”只接待本地访客。
所以,除了配置安全组,还必须修改OpenClaw的监听模式,让它监听所有网络接口(0.0.0.0),而不是只监听本地回环地址(127.0.0.1)。
5.2 修改监听模式
使用以下命令将OpenClaw网关的绑定模式从 loopback 改为 lan:
# 查看当前网关配置
openclaw config get gateway
# 将绑定模式设置为 lan(局域网/公网可访问)
openclaw config set gateway.bind "lan"
lan 模式会让OpenClaw监听所有网络接口(0.0.0.0),从而允许来自公网的访问。
如果你需要更精细的控制,也可以直接指定要监听的IP地址:
# 指定监听所有接口
openclaw config set gateway.customBindHost "0.0.0.0"
5.3 重启网关服务
修改配置后,需要重启网关服务使配置生效:
# 停止网关
openclaw gateway stop
# 启动网关
openclaw gateway start
# 或者直接重启
openclaw gateway restart
第六章:验证与测试——确认外网访问成功
6.1 本地验证
在CVM内部先验证服务是否正常运行:
# 测试本地访问
curl -X GET http://127.0.0.1:18789/health
预期返回结果类似:{"status":"healthy","version":"x.x.x"}。如果返回了这个结果,说明OpenClaw服务本身是正常的。
6.2 验证端口监听状态
使用以下命令确认18789端口正在监听所有接口:
# 查看端口监听状态
netstat -tuln | grep 18789
如果看到类似 0.0.0.0:18789 或 :::18789 的输出,说明服务正在监听所有网络接口,配置正确。如果看到 127.0.0.1:18789,说明还在监听本地回环地址,需要重新检查上一步的配置。
6.3 外网访问验证
在本地电脑的浏览器中,输入以下地址:
http://你的CVM公网IP:18789
如果一切配置正确,你应该能看到OpenClaw的Web控制台界面。如果还是打不开,请参考下一章的排查思路。
第七章:故障排查——外网访问不通怎么办?
7.1 系统性地排查问题
如果外网访问仍然不通,按照以下顺序逐一排查:
第一步:检查安全组入站规则
- 确认安全组已绑定到你的CVM实例。
- 确认入站规则中有
TCP:18789且策略为“允许”。 - 确认来源地址包含你的客户端IP(如果是
0.0.0.0/0则不需要检查)。 - 确认规则顺序正确,没有被前面的拒绝规则拦截。
第二步:检查OpenClaw监听地址
- 执行
netstat -tuln | grep 18789确认监听地址是0.0.0.0而不是127.0.0.1。 - 如果还是
127.0.0.1,重新执行openclaw config set gateway.bind "lan"并重启服务。
第三步:检查CVM内部防火墙
- 有些Linux发行版自带防火墙(如ufw、firewalld),需要额外放行18789端口。
- 以ufw为例:
sudo ufw allow 18789/tcp
第四步:检查网络ACL
- 如果安全组已放行但仍不通,检查CVM所属子网是否关联了网络ACL。ACL规则优先级低于安全组但高于实例级别。
第五步:使用端口验通工具
- 腾讯云控制台提供了“实例端口验通工具”,可以通过一键放通功能放行相关端口。
7.2 常见症状与解决方案
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 浏览器提示“连接超时” | 安全组未放行端口,或服务未启动 | 检查安全组入站规则,确认服务正在运行 |
| 浏览器提示“连接被拒绝” | OpenClaw监听在127.0.0.1 | 执行 openclaw config set gateway.bind "lan" 并重启 |
| curl本地访问正常,外网不行 | 安全组配置问题或监听地址问题 | 同时检查安全组和监听地址 |
| 端口验通工具显示端口开放但浏览器打不开 | 服务本身有问题或监听地址不对 | 检查OpenClaw服务日志,确认监听地址 |
第八章:安全建议与最佳实践
8.1 最小权限原则
安全组的核心设计理念是“最小权限”——只开放业务必需的端口,每个端口都要有明确的业务理由。不要图省事把所有端口全开放。对于18789端口,如果只是你自己使用,建议将安全组的“来源”从 0.0.0.0/0 改为你个人的公网IP地址。
8.2 数据库端口严禁对公网开放
MySQL的3306端口、Redis的6379端口等数据库端口,绝对不要对公网(0.0.0.0/0)开放。这些端口一旦暴露在公网上,很容易被黑客扫描和攻击。数据库端口应该仅对内网IP开放。
8.3 SSH端口限制来源IP
SSH的22端口是服务器管理的关键入口,建议仅对你的办公IP或VPN IP开放。如果对全公网开放,很容易被暴力破解攻击。
8.4 使用子账号进行权限管理
建议使用RAM子账号进行最小权限授权,避免主账号密钥泄露带来的安全风险。
第九章:总结
到这里,你已经完成了从零开始的全流程:理解了安全组的概念和原理,在腾讯云CVM上配置了入站规则开放18789端口,安装了OpenClaw并调整了监听模式,最终实现了通过公网IP访问OpenClaw后台。
回顾整个流程,最核心的两步是:
- 在腾讯云安全组中放行18789端口的入站流量——这是“大门”层面的开放。
- 将OpenClaw的监听模式从loopback改为lan——这是“房间”层面的开放。
缺了任何一步,外网访问都无法成功。很多小白用户只做了第一步就卡住了,希望这篇文章能帮你避开这个坑。
最后提醒一句:安全组是CVM安全防护体系中的重要一环。在享受便捷的外网访问的同时,务必遵循最小权限原则,只开放必要的端口,保护好你的服务器安全。
常见问题解答(Q&A)
Q1:我在安全组里添加了18789端口的入站规则,但外网还是访问不了,为什么?
A1:最可能的原因是OpenClaw默认只监听127.0.0.1(本地回环地址)。请执行 openclaw config set gateway.bind "lan" 将监听模式改为lan,然后重启网关服务。用 netstat -tuln | grep 18789 确认监听地址是0.0.0.0而不是127.0.0.1。
Q2:安全组规则添加后多久生效?需要重启CVM吗?
A2:安全组规则保存后立即生效,不需要重启CVM。如果规则没有生效,检查安全组是否已绑定到你的CVM实例。
Q3:把安全组的“来源”设置为0.0.0.0/0安全吗?
A3:0.0.0.0/0表示允许所有IP访问。如果是测试环境或只有你自己使用,建议改为你的个人公网IP地址。生产环境务必遵循最小权限原则。
Q4:OpenClaw的18789端口可以改成其他端口吗?
A4:可以。启动时使用 openclaw gateway --port 你想要的新端口号 即可。但需要注意,修改端口后安全组中也要对应放行新端口。
Q5:OpenClaw服务怎么实现开机自启?
A5:执行 openclaw onboard --install-daemon 可以将OpenClaw安装为systemd守护进程。安装后会生成 ~/.config/systemd/user/openclaw-gateway.service 文件,系统启动时会自动启动OpenClaw服务。
Q6:安全组规则有优先级吗?多条规则怎么排序?
A6:安全组内规则的优先级是位置越靠上,优先级越高。如果上面的拒绝规则匹配了流量,下面即使有允许规则也不会生效。建议将允许规则放在靠前的位置,拒绝规则放在靠后的位置。




