Openclaw的安全问题不容忽视,但我们还离不开这个好用的助手!

于是我研究了如何在云服务器上安装部署一个Openclaw,让它远离我们真实的设备,只在安全沙盒中运行,我选用的是阿里云ecs云服务器(现在新用户可以免费领取300元的额度)+VScode

我选用的是4核8GB,操作系统选的是Ubuntu 22.04,预装应用Docker。

接下来进入正题:

第一步:阿里云 ECS 预处理 (放行端口)

OpenClaw 启动后会提供一个 Web 控制台(Control UI),默认运行在 18789 端口。需要先去阿里云放行这个端口。

  1. 登录阿里云控制台,进入你的 ECS 实例详情。

  2. 点击左侧的 安全组 -> 配置规则

  3. 添加一条入方向规则:协议选 TCP,端口填 18789,授权对象填 0.0.0.0/0(或者为了安全,只填你当前电脑的公网 IP)。

第二步:在服务器上部署 OpenClaw

在VScode中使用SSH 登录到你的 Ubuntu 22.04 服务器,按照以下步骤拉取并启动:注意!所有命令行都是在VScode终端输入!

1. 克隆官方仓库

git clone https://github.com/openclaw/openclaw.git
cd openclaw

2. 运行官方初始化脚本OpenClaw 提供了一键脚本,会自动拉取镜像、处理目录权限并运行配置向导:

./docker-setup.sh

到这一步可能会报错,

ERROR: failed to build: failed to solve: process "/bin/sh -c curl -fsSL https://bun.sh/install | bash" did not complete successfully: exit code: 1  

接下来按照以下步骤操作:

1. 编辑 Dockerfile在你的终端里(确保当前在 openclaw 目录下),输入以下命令打开文件:

nano Dockerfile

 ①替换 Bun 的安装方式(换国内源)在文件前半部分,找到这行:

Dockerfile文件中找到以下字段
RUN curl -fsSL https://bun.sh/install | bash

把它整行删掉(或加 # 注释),替换成

RUN npm config set registry https://registry.npmmirror.com \
    && npm install -g bun \
    && mkdir -p ~/.bun/bin \
    && ln -s $(which bun) ~/.bun/bin/bun \
    && echo'[install]\nregistry = "https://registry.npmmirror.com/"' > ~/.bunfig.toml

​​​​​②修改 pnpm 安装参数(解除锁定 + 限制并发防止死机)在文件后半部分,找到包含 --frozen-lockfile 的那一段(注意它可能有多行,重点看最后面):

RUN --mount=type=cache,id=openclaw-pnpm-store,target=/root/.local/share/pnpm/store,sharing=locked \
    NODE_OPTIONS=--max-old-space-size=2048 pnpm install --frozen-lockfile

把它替换成下面这样:

RUN --mount=type=cache,id=openclaw-pnpm-store,target=/root/.local/share/pnpm/store,sharing=locked \
    NODE_OPTIONS=--max-old-space-size=2048 pnpm install --no-frozen-lockfile

到这一步还需要在上面②这行代码上面插入一个字段,强制 Git 走 HTTP/1.1 协议:

RUN git config --global url."https://github.com/".insteadOf ssh://git@github.com/ \
    && git config --global url."https://github.com/".insteadOf git+ssh://git@github.com/ \
    && git config --global http.version HTTP/1.1

插入后,那段代码看起来应该是这样的:

# (上面其他的代码...)
COPY --from=ext-deps /out/ ./extensions/
RUN git config --global url."https://github.com/".insteadOf ssh://git@github.com/ \
    && git config --global url."https://github.com/".insteadOf git+ssh://git@github.com/ \
    && git config --global http.version HTTP/1.1
RUN --mount=type=cache,id=openclaw-pnpm-store,target=/root/.local/share/pnpm/store,sharing=locked \
    NODE_OPTIONS=--max-old-space-size=4096 pnpm install --no-frozen-lockfile

保存并重试

  • 按 Ctrl + O 保存,按 Enter 确认。

  • 按 Ctrl + X 退出。

  • 再次运行安装脚本:

    ./docker-setup.sh

    这样就没什么问题了,运行安装结束就会出现openclaw的配置界面,按照自己的需求配置即可!

配置过程中可能会报错,容器在无限重启:

Error response from daemon: cannot join network namespace of container: Container bdc6d58310f018d7f7227e5f7965faec33f331xxxx1 is restarting, wait until the container is running

解决方法是

在终端(确保在 ~/openclaw 目录下)依次复制粘贴执行以下三条命令:

修改绑定地址为 lan  (允许所有外部 IP 访问)

echo "OPENCLAW_GATEWAY_BIND=lan" >> .env
Bash 停止并移除处于无限重启状态的错误容器
docker compose down
  • Bash 重新在后台启动正确的容器
    docker compose up -d
  • 使用以下代码确认docker容器是否在工作:
docker ps

1.如果 STATUS 这一列写着类似 Up 3 minutes,说明程序运行得非常完美,问题100%出在网络防火墙或者 Ubuntu 自身的 ufw 上。

2.如果写着 Restarting,说明我们刚才修改的 .env 文件没有被正确加载,容器还在无限重启。

但一般情况下是没有问题了。有问题检查以上哪步出错再修改一下即可!

如果通过,你会在VScode终端看到这个:

Current runtime bind: lan

Gateway token: ecd8b8ddb6d75xxxx

这个时候打开你电脑的浏览器,复制并访问下面这个专属链接(注意把 <你的阿里云ECS公网IP> 替换成你真实的 IP 地址),这就是你访问openclaw ui的网址:

http://<阿里云ECS公网IP>:18789/#token=ecd8b8ddb6d75xxxx

但接下来OpenClaw 的安全机制发出了警报,需要一个修复脚本,直接在VScode终端运行即可:

python3 -c '
import json, os
path = os.path.expanduser("~/.openclaw/openclaw.json")
with open(path, "r") as f:
    data = json.load(f)
if "gateway" not in data:
    data["gateway"] = {}
if "controlUi" not in data["gateway"]:
    data["gateway"]["controlUi"] = {}
data["gateway"]["controlUi"]["dangerouslyAllowHostHeaderOriginFallback"] = True
with open(path, "w") as f:
    json.dump(data, f, indent=2)
print("✅ 安全策略已成功放行!")
'

看到输出 ✅ 安全策略已成功放行! 后,直接执行重启命令:

docker restart openclaw-openclaw-gateway-1

但是!这个时候注意了,浏览器和本地网络限制可能还让你无法打开openclaw ui,这就需要一个简单操作了:

在你电脑自带的终端(CMD、PowerShell 或 Terminal)里粘贴并回车运行这行命令:

ssh -L 18789:localhost:18789 root@<你的阿里云公网IP>

​​​​​​​

(运行后,它会像平时一样要求你输入阿里云服务器的密码。登录成功后,你就把这个黑框框挂在后台,不要关掉它。)

这个时候再打开这个网址就会出现openclaw 的ui了!

http://<阿里云ECS公网IP>:18789/#token=ecd8b8ddb6d75xxxx

刚进来可能是无连接的,需要在上面这个网关访问的网管令牌这里再输入一次你的token:

Current runtime bind: lan

Gateway token: ecd8b8ddb6d75xxxx

点击连接就能连上!

但是还可能有问题:

pairing required

此设备需要网关主机的配对批准。

这个是安全机制在作用,防止你的 Token 泄漏,只需要按照以下方法:

第一步:查看待批准的设备列表

在终端输入以下命令(注意我们要通过 docker 去执行):

docker exec -it openclaw-openclaw-gateway-1 openclaw devices list

运行后,你会看到一行列表,里面会有一个处于 pending(待处理)状态的请求,并且前面有一串类似 req_123456... 或者几位数字的 ID (requestId)。请把这个 ID 复制下来。

第二步:批准你的电脑浏览器

拿到 ID 后,运行下面这条命令批准它(把 <requestId> 替换成你刚才复制的真实 ID,注意不要带尖括号):

​​​​​​​​​​​​​​docker exec -it openclaw-openclaw-gateway-1 openclaw devices approve <requestId>

只要终端提示 Approved 或者 Success,你再切回你的电脑浏览器看一眼——那个配对的拦截页面会自动消失

到这里基本完成了,只需要你去连接飞书之类的就可以使用了!

完结撒花!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐