企业云平台部署Openclaw的实践

在企业内部有一个研发云平台,可以启动Docker容器,并通过端口映射的服务给用户访问。我想在该平台上参考各大云厂商的做法,让用户可以基于Openclaw来启动自己的容器,提供个人助手的服务。目前Openclaw的版本迭代演进很快,基于最新的3.8版本,测试一下应如何在云平台通过安全的方式来提供Openclaw服务给用户。

由于Openclaw的功能很强大,同时不可避免的有很多安全漏洞,如果不注意安全问题,那么用户自己部署的Openclaw服务很容易受到攻击。结合Openclaw官网中对安全这部分的介绍,我打算在Openclaw容器中配置Nginx服务,通过https的方式来给外部提供连接。

生成云平台IP的自签证书

1. 创建 OpenSSL 配置文件

因为Openclaw不是在本地运行,要通过云平台的IP和端口访问,因此需要开启https。为云平台生成自签证书,首先创建一个openssl.cnf的配置文件

复制代码
[req]
default_bits        = 2048
distinguished_name  = req_distinguished_name
req_extensions      = req_ext
x509_extensions     = v3_req  # 生成自签名证书时使用的扩展
prompt              = no

[req_distinguished_name]
countryName             = CN
stateOrProvinceName     = Beijing
localityName            = Beijing
organizationName        = Example Inc.
organizationalUnitName  = IT
commonName              = 192.168.1.100  # 这里填写云平台IP 或一个描述名称

[req_ext]
subjectAltName = @alt_names

[v3_req]
subjectAltName = @alt_names

[alt_names]
IP.1 = 192.168.1.100  # 云平台IP
# 如果有多个 IP 可以继续添加 IP.2, IP.3...
# 也可以添加 DNS 名称,例如 DNS.1 = internal.example.com

2. 生成私钥和自签名证书

为云平台生成证书,执行以下命令

复制代码
# 生成私钥
openssl genrsa -out myip.key 2048

# 使用配置文件生成证书(有效期 365 天)
openssl req -x509 -new -nodes \
  -key myip.key \
  -sha256 -days 365 \
  -out myip.crt \
  -config openssl.cnf \
  -extensions v3_req

3. 验证证书是否包含正确 IP

执行以下命令

复制代码
openssl x509 -in myip.crt -text -noout | grep -A 1 "Subject Alternative Name"

生成Nginx配置文件

可以通过Nginx来处理Https协议,在Openclaw容器内监听https端口并转发到对应的服务。创建一个default.conf文件,内容如下:

复制代码
server {
    listen 18999 ssl http2;  # 关键:监听 443 端口并启用 SSL
    server_name 172.18.193.247;

    # SSL 证书配置
    ssl_certificate     /etc/nginx/certs/myip.crt;  # 证书文件路径(容器内)
    ssl_certificate_key /etc/nginx/certs/myip.key;  # 私钥文件路径(容器内)

    # 推荐的安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # 根路径配置
    location / {
        #root   /usr/share/nginx/html;  # 或你的静态文件路径
        #index  index.html index.htm;
        # 如果是反向代理到后端服务,使用 proxy_pass
        proxy_pass http://localhost:18789;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 增加超时时间,防止长连接意外断开
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}

server {
    listen 3001 ssl http2;  # 关键:监听 443 端口并启用 SSL
    server_name 172.18.193.247;

    # SSL 证书配置
    ssl_certificate     /etc/nginx/certs/myip.crt;  # 证书文件路径(容器内)
    ssl_certificate_key /etc/nginx/certs/myip.key;  # 私钥文件路径(容器内)

    # 推荐的安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # 根路径配置
    location / {
        #root   /usr/share/nginx/html;  # 或你的静态文件路径
        #index  index.html index.htm;
        # 如果是反向代理到后端服务,使用 proxy_pass
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 增加超时时间,防止长连接意外断开
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}

在这个配置文件里面,监听了两个https端口,其中18999这个端口会转发服务到openclaw的本地服务端口18789,另一个3001端口会转发到OpenClaw-bot-review的服务端口3000。这是一个轻量级 Web 仪表盘,用于一览所有openclaw机器人/Agent/模型/会话的运行状态,其内置像素风动画办公室,让openclaw的 Agent 化身像素角色在办公室里行走、就座、互动,为枯燥的运维增添一份趣味。另外配置文件里面也设置了使用刚才生成的证书和Key。

生成Openclaw配置文件

为了便利用户部署Openclaw,可以把常用的大模型,channel都先配置好。另外还需要设置配置文件openclaw.json中的gateway部分的设置,内容如下:

复制代码
{
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "controlUi": {
      "allowedOrigins": [
        "http://localhost:18789",
        "http://127.0.0.1:18789",
        "https://云IP:18999"
      ],
    },
    "auth": {
      "mode": "token",
      "token": "xxxxxxxxxxxxxxxxxxx"
    },
    ...
}

在这个设置中,限定了openclaw只能通过本地localhost来访问。如果是远程访问,只允许在allowedOrigins里面的源才可访问。

构建私有Openclaw镜像

在本地创建一个目录,拷贝default.conf、openclaw.json文件到该目录,另外创建一个名为certs的子目录,把之前生成的证书和Key拷贝到该目录。在该目录下创建一个debian.sources文件,定义要用到的国内源。

复制代码
Types: deb deb-src
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: trixie trixie-updates trixie-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

在目录中运行git clone命令,拉取OpenClaw-bot-review代码

复制代码
git clone https://github.com/xmanrui/OpenClaw-bot-review.git

新建一个Dockerfile文件,内容如下:

复制代码
FROM m.daocloud.io/ghcr.io/openclaw/openclaw:2026.3.8

USER root
#复制Debian国内源设置
COPY debian.sources /etc/apt/sources.list.d/

#安装Nginx
RUN apt-get update && apt-get install nginx nano -y
COPY default.conf /etc/nginx/conf.d/default.conf
COPY certs/ /etc/nginx/certs/

COPY OpenClaw-bot-review/ /app/OpenClaw-bot-review/
RUN chown -R node:node /app/OpenClaw-bot-review

USER node
#设置npm国内源
RUN npm config set registry https://registry.npmmirror.com
WORKDIR /app/OpenClaw-bot-review
RUN npm install

WORKDIR /app

最后运行以下命令构建镜像

复制代码
docker build -t openclaw:local .

服务验证

在本地可以进行验证,例如查询本地docker服务的IP地址是172.18.193.247,在以上的配置中设置该IP,然后拉取openclaw的代码,然后通过docker compose up来运行。

复制代码
git clone https://github.com/openclaw.git
git checkout v2026.3.8
cd openclaw
export OPENCLAW_IMAGE=openclaw:local
docker compose up -d

容器启动之后,可以通过以下命令进入gateway容器,然后启动nginx

复制代码
docker exec -it -u root openclaw-openclaw-gateway-1
nginx

之后在浏览器中输入https://172.18.193.247:18999/?token=XXXXXX接口打开页面,这时会提示说deivce pairing require,以下命令进入容器,然后批准pair即可

复制代码
docker exec -it openclaw-openclaw-gateway-1 bash
openclaw devices list
openclaw devices approve XXXXX(requestid)
相关推荐
Are_You_Okkk_1 小时前
不只是辅助编程:AI研发框架如何重构团队研发体系?
人工智能·重构·开源·ai编程
枫叶梨花2 小时前
Qwen3-ASR 本地部署与使用完整指南
人工智能
badhope2 小时前
OpenClaw卸载命令全解析
java·linux·人工智能·python·sql·数据挖掘·策略模式
chaors2 小时前
Langchain入门到精通0x0c:middleware
人工智能·langchain·ai编程
gustt2 小时前
从零搭建电子书RAG问答系统:Milvus + LangChain实战指南
人工智能·llm
FriendshipT2 小时前
评估指标:AP(Average Precision)、mAP(Mean Average Precision)
人工智能·python·计算机视觉·map·ap
limx76322 小时前
AstronClaw实战:邮箱
人工智能
新缸中之脑2 小时前
Autoresearch 快速上手
人工智能
Jackson@ML2 小时前
自然语言处理概要
人工智能·自然语言处理·nlp