从零开始的Openclaw源码部署


由于这个Openclaw更新的很快,可能半个月一个版本,如果不是确实只是测试,建议 源码部署!同时 由于权限极高建议给他单独整一台服务器或者单独拿一台机子运行。

今天这篇,就是为真正想动手的人准备的——让你即使第一次接触也能快速了解并实现本地部署使用,避免你少走弯路节省时间。

第一、OpenClaw 是什么
OpenClaw 是一个开源、可本地部署的个人AI智能体(Personal AI Agent),核心能力是“真正做事”——能操作软件、执行终端命令、管理文件、发邮件、写代码,并具备两周记忆与跨平台交互能力。

第二、OpenClaw 架构与能力
OpenClaw 不是普通聊天机器人,而是一个可长期运行、具备系统级权限的本地AI代理**,其四层架构明确分工:

组件 功能说明 关键细节
Gateway(网关) 连接外部交互入口 支持 Telegram、iMessage、WhatsApp等,将消息路由至Agent(国内的目前只有飞书有开源插件,其他都是云厂商自己对接实现部署在云服务里的)
Agent(智能体) 核心推理与决策单元 接入 Claude、OpenAI 或本地大模型,处理上下文、调用记忆与技能(也可以国内的千问、MinMax、GLM)
Skills(技能) 可扩展的操作能力 支持网页调研、邮箱读写、浏览器自动化;用户可要求其“自主开发新技能”,包括写代码、安装模块、运行脚本
Memory(记忆) 持久化用户知识库 存储两周内对话记录与工作习惯,以 Markdown 文件形式本地保存;支持主动推送提醒

一、环境配置

ubuntu24.04

1、增加服务器donxu的角色

# 创建角色
sudo useradd -m -s /bin/bash newuser 
#修改密码
passwd newuse
# 将用户 "bihui" 添加到 root权限
sudo usermod -aG sudo newuser 

然后退出root 用这个newuser重新登录。
注:如果本身就是已经被分配的角色则不需要新建角色

2、配置git

# 配置基本信息
git config --global user.name YangHao
git config --global user.email waitKey1@outlook.com
# 生成公匙
ssh-keygen -t rsa -C waitKey1@outlook.com

在这里插入图片描述
将上面的公匙复制
在这里插入图片描述
进入github–>Settings->SSH and GPG keys—>New SSH key
将公匙复制进去,到这里git配置完毕

3、配置node

# 1、nvm的安装
curl -o- https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh | bash
# 2、赋予执行权限
chmod +x ~/.nvm/nvm.sh
# 3、刷新环境变量让nvm可执行
source ~/.bashrc
# 4、node 安装
nvm install --lts
# 5、node 使用
nvm use --lts
# 6、node 确定
node -v
# 7、安装pnpm
npm install -g pnpm
# 8、增加淘宝源
pnpm config set registry https://registry.npmmirror.com/
npm config set registry https://registry.npmmirror.com/

二、Openclaw部署

1、源码部署

git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
pnpm openclaw onboard --install-daemon

下面对面板配置选择可以参考博主的选项
在这里插入图片描述
在这里因为是国内,配置qwen的更方便一些,如果有其他的选择看情况选
在这里插入图片描述
渠道和skill这里跳过。
最后到这里就结束,可以通过如下的url访问 http://localhost:18789/#token=298b377956e401d8acd9888d5722473d7239ca4ee7544ede
在这里插入图片描述
到这里就结束了ctrl+z 退出
复制链接
http://localhost:18789/#token=298b377956e401d8acd9888d5722473d7239ca4ee7544ede
可以正常进去,不过如果是在云服务中配置,想要通过远程访问则不行
在这里插入图片描述
在这里如果不是本地使用需要调整配置

在这里插入图片描述
重启刷新配置

pnpm openclaw gateway restart

在输入网址可以看到就能进去了,如果还不行可以看看防火墙。
在这里插入图片描述
这时候可以看到报错disconnected (1008): control ui requires HTTPS or localhost (secure context),这是因为只支持HTTPS或localhost使用,下面我们开始配置域名!

2、加SSl证书配置https

前置条件:我默认你已经有域名了,如果没有需要在国内的阿里云、腾讯云、华为云,国外的Hostinger等云服务商都提供域名注册和域名解析服务。找一个你喜欢的就可以,在这里我用的是阿里云注册的域名进行演示。
(国内的域名需要提前备案,15天左右。如果比较着急且只是演示可以用香港或者国外如Hostinger 云服务厂商提供的域名这样可以免掉备案的步骤)

(1)将域名解析到你的服务器

在这里插入图片描述

(2)验证该域名是否解析成功

执行 nslookup + 域名,即可查询域名解析对象

nslookup bak.sligenai.cn

在这里插入图片描述
看到解析到你的公网服务器的ip就完成了

(3)let’s Encrypt 证书申请

(1)certbot安装
我们需要安装Certbot并用于申请let’s Encrypt 。
打开终端,运行以下命令:

sudo apt update
sudo apt install certbot python3-certbot-nginx

(2)let’s Encrypt 证书申请

 sudo certbot --nginx -d bak.sligenai.cn

如果是第一次,可能会要你输入你的邮箱和让你输入A或Yes同意一些条款你按着输入就行。
在这里插入图片描述
然后就生成好证书了。记得保存好fullchain.pem和private.pem的路径,这个等下会用到。

下面是我的fullchain.pem和private.pem的路径
/etc/letsencrypt/live/bak.sligenai.cn/fullchain.pem
/etc/letsencrypt/live/bak.sligenai.cn/privkey.pem

fullchain.pemprivkey.pem这两个文件对于配置Web服务器以安全地提供服务是非常重要的。下面是这两个文件的详细说明:
fullchain.pem

  • 含义fullchain.pem文件包含了你的域名证书以及任何中间证书的完整链,但不包括根证书。这个文件是将你的证书(cert.pem)和中间证书(chain.pem)合并而成的。在大多数Web服务器的SSL配置中,使用这个文件可以确保客户端(如Web浏览器)能够信任你的证书,即能够通过证书链验证到达一个根CA,该根CA已被客户端信任。
  • 用途:在配置SSL/TLS时,fullchain.pem通常用于服务器配置中指定证书文件。例如,在Nginx中,会用它来设置ssl_certificate指令。

privkey.pem

  • 含义privkey.pem文件包含了你的私钥,这是在生成CSR(证书签名请求)时创建的。私钥是安全通信的基础,用于在SSL/TLS握手过程中对服务器端信息进行加密,确保只有对应的公钥(即你的服务器证书)能够解密。私钥必须保密,任何泄露都可能导致通信被解密。
  • 用途:在Web服务器的SSL配置中,privkey.pem用于设置私钥文件的位置。例如,在Nginx配置中,会用它来设置ssl_certificate_key指令。

总结

  • fullchain.pem:包含你的域名证书和中间证书的全部内容,用于服务器配置中指定证书链。
  • privkey.pem:包含你的私钥,用于服务器配置中指定私钥文件的位置。

在配置SSL/TLS时,确保正确使用这些文件,同时保护好你的私钥,避免安全风险。

注1:如果你没有开放443,80端口,申请的时候会报错
注2:如果你没有将域名解析到这个服务器的ip也会报错,会出现类似下面的回复。

在这里插入图片描述
注3:如果报错如下是因为标准证书在80端口不可用,可以降级到DNS验证。
在这里插入图片描述
用 DNS 验证申请单域名证书:

sudo certbot certonly --manual --preferred-challenges=dns -d *.silengene.com

在这里插入图片描述
在这里插入图片描述

添加完后等待一分钟,然后Enter继续,就可以申请成功了

3、配置nginx

1、nginx安装

sudo apt update
sudo apt install nginx

2、配置nginx.conf
打开nginx.conf

 vim /etc/nginx/nginx.conf

下面是一个nginx.conf模版

# nginx.conf
worker_processes auto; # 与worker_connections乘积表示实际处理事件的总数

events {
    worker_connections 1024;  # 每个工作进程连接数
}


http {
    include       mime.types;   # 文件扩展名与文件类型映射表
    default_type  application/octet-stream;
    client_max_body_size 10M;
    sendfile        on;            # 减少网络报文数量
    keepalive_timeout  65; # 链接超时时间,自动断开,如果为0则无限时长。
    # HTTP 强制跳转 HTTPS(必须配置)
server {
    listen 80;
    server_name  bak.sligenai.cn www.bak.sligenai.cn;
    return 301 https://$server_name$request_uri;
}
    # HTTP server配置(重定向到HTTPS)
    server {
        listen 80;  # 监听80端口
        server_name bak.sligenai.cn;             # 替换为你的域名
        return 301 https://$host$request_uri;  # 强制重定向到HTTPS
    }
    # HTTPS server配置
    server {
        listen 443 ssl;  # 监听443端口
        server_name bak.sligenai.cn;             # 替换为你的域名

        ssl_certificate /etc/letsencrypt/live/bak.sligenai.cn/fullchain.pem;          #替换为你的fuuchian.pem
        ssl_certificate_key /etc/letsencrypt/live/bak.sligenai.cn/privkey.pem;    #替换为你的privkey.pem

        root         /usr/share/nginx/html;

         location / {
    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 86400s;
    proxy_send_timeout 86400s;
}

     
        location /vue-test {                              #替换为你的项目路由,注意需要一开头的base一致
            index index.html index.htm;
            try_files $uri $uri/ /vue-test/index.html;       #这个则是/路由/index.html 前面的部分一致不用动。   
        }
    
     
        error_page  404  /404.html;  # 自定义404页面
        location = /404.html {
            internal;
        }

        error_page  500 502 503 504  /50x.html;  # 自定义500页面
        location = /50x.html {
            internal;
        }
    }

   
}

注1:上面一共两个路由 /vue-test、 /abc ,分别为前端和后端,用自己的域名替换掉bak.sligenai.cn 即可。
注2:如果有多个项目则复制/vue-test 在旁边粘贴一个,改掉路由即可。
注3: 如果有其他域名,则额外把上面这个server复制一遍,即可。

3、重新运行nginx
在这里插入图片描述
检测nginx.conf是否配置正常

nginx -t

如果报错,则按照提示修改即可。

重新运行nginx

sudo systemctl reload nginx

然后我们从域名进去就发现可以正常访问了
在这里插入图片描述
同时报错信息从:disconnected (1008): control ui requires HTTPS or localhost (secure context) 变为disconnected (1008): pairing required
这是因为,controlUi没有予许https可以通过验证进入,只需要在openclaw的配置文件中加入

    "controlUi": {
      "allowedOrigins": [
        "http://localhost:18789",
        "http://127.0.0.1:18789",
        "https://openclaw4.sligenai.cn"
      ],
      "allowInsecureAuth": true
    },

即可具体位置如下:
在这里插入图片描述

改完之后重启一下服务完成配置:

pnpm openclaw gateway restart

访问url类似如下:
https://域名/#token=xxxx

https://openclaw4.sligenai.cn/#token=ae189074e3dba332f56ccded303172d1xxxxx

4、配置web_search(可选)

openclaw configure --section web

在这里插入图片描述

Brave Search API密钥可以通过以下方式获得:
访问Brave Search API官方网站:https://brave.com/search/api/
在网站上找到API密钥申请的相关页面
注册并申请API密钥,您将获得一个API密钥。
这里比较麻烦的一点就是,你需要整一个可以支付外币的卡,这里建议直接申请Visa实体卡,然后就可以用于支付。

三、结语

到这里你就可以开始愉快的和你的AI助手交流了,整个流程走完大概需要2~3个小时恭喜你可以坚持下来,专注是AI时代宝贵的能力。
在这里插入图片描述
下一章则是演示如何配置企业微信的channel、飞书,在通讯工具上去和openclaw进行交互。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐