作者:CSDN博客
本地部署方式
后面详细了解了下,这个功能其实就是一个npm包,不用买单独的云服务器。作为程序员,可以用的服务器可是有一堆,或者自己开个虚拟机在上面安装就行了。
官网地址: https://github.com/openclaw/openclaw
1.安装npm(第一种安装方式)
首先你得安装22.0以上版本的npm,此版本的npm不支持在类似centos7的低版本系统中运行。
例如,以下我是在centos8系统安装的。
# centos8、ubuntu22等系统用高版本的- # centos8、ubuntu22等系统用高版本的
- wget https://nodejs.org/dist/v24.13.0/node-v24.13.0-linux-x64.tar.xz
- # 解压缩
- tar -xf node-v24.13.0-linux-x64.tar.xz
- # 把这个解压缩的文件放到用户目录/usr/local
- mv node-v24.13.0-linux-x64 /usr/local/node
- # 配置软连接方便进行全局调用
- sudo ln -s /usr/local/node/bin/node /usr/bin/node
- sudo ln -s /usr/local/node/bin/npm /usr/bin/npm
复制代码 2.安装openclaw- # 执行安装
- npm install -g openclaw@latest
- # 配置软连接
- sudo ln -s /usr/local/node/bin/openclaw /usr/bin/openclaw
- # 查看是否安装成功
- openclaw --help
复制代码 出现以下类似界面说明安装成功
我竟然安装失败了。可能因为网络原因吧。
2.使用脚本安装(第2种安装方式)- curl -fsSL https://openclaw.ai/install.sh | bash
复制代码 这种安装方式还是有可能失败,解决方案如下:- ###这样会输出安装的所有日志,方便查看到底哪里报错
- curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh \
- | CLAWDBOT_NPM_LOGLEVEL=verbose bash -s -- --verbose
- ###可以将报错信息丢给大模型去分析
- 常见原因:Git Key 问题(高频)
- 典型特征:
- 日志中出现:
- git@github.com
- Permission denied (publickey)
- npm ERR! code 128
- 根本原因:
- npm 表面失败,但根因在 git clone 私有仓库
- Git SSH Key 没配置 / 配错了
- 四、解决步骤
- 1. 检查 SSH Key 配置
- # 查看现有 SSH Key
- ls -la ~/.ssh
- # 测试 GitHub 连接
- ssh -T git@github.com
- 2. 生成或配置 SSH Key
- 如果没有 SSH Key:
- # 生成新的 SSH Key
- ssh-keygen -t ed25519 -C "your_email@example.com"
- # 将公钥添加到 GitHub
- cat ~/.ssh/id_ed25519.pub
- 3. 将公钥添加到 GitHub
- 复制公钥内容
- 登录 GitHub → Settings → SSH and GPG keys → New SSH key
- 粘贴公钥并保存
- 五、其他常见问题
- 1. 网络问题
- # 配置 npm 镜像(如果在中国大陆)
- npm config set registry https://registry.npmmirror.com
- 2. Node 版本不兼容
- # 检查 Node 版本
- node -v
- # 推荐使用 nvm 管理 Node 版本
- nvm install 24
- nvm use 24
复制代码 出现下面安装
3.运行指引并安装守护进程
(1)手动配置
OpenClaw与常见的应用模板不同,官方提供了若干需用户自行手动配置的步骤,在首次登入服务器后,输入并回车运行如下命令开始配置:- openclaw onboard --install-daemon
复制代码 运行上面的命令后,出现同意免责声明,将会出现一个问题:是否知晓风险,选择Yes就行。
(2)配置模式选择:快速入门
接下来需要选择Onboarding的模式。
第一个是快速启动,后续通过 openclaw configure 配置信息。
第二个是先手动配置。
我们选择QuickStart。
(3)模型配置
然后它会让你配置AI大模型。
你有什么就选什么吧,网上说智谱的GLM4.7比较好用,但是这个太火爆了,买不到。我自己目前用的是阿里的Qwen。【这不不想配置,可以直接跳过】
(4)选择频道
配置好模型后,会让你选择聊天频道。
这些全是海外的,我们用不了。
选择最后一个,直接跳过。
(5)配置Skills
然后会问你要不要配置技能。选YES
依赖Homebrew也选Yes装上。
然后会让你选择用什么管理器安装。
一般用npm,前面也安装过了。
再然后,会给你一堆Skills:
直接跳过吧,后续跟它对话也能装。
(6)配置Hooks
继续下一步,会问你要不要配置hooks。
可以理解为三个插件:
boot-md:启动时自动加载一段markdown文本当默认引导内容。常用于把你的规则、偏好、项目背景在每次启动时塞进去。
command-logger:把你在Clawdbot里执行过的命令和关键操作记一份日志,方便排查问题和复盘。如果你比较在意隐私或不想留痕,就别开它。
session-memory:保存会话相关的状态或记忆,让它下次能延续上下文,体验会更连贯。
建议都开,都非常实用。
(7)选择交互方式
它问你想要用什么方式孵化你的机器人?
命令行方式(推荐)
web界面方式
稍后选择
肯定有图形化界面最好了!这个新手选web界面方式吧。除非你是老手,只想用命令行界面方式交互。
4.配置web界面
这时候如果是用ubuntu系统安装的,不一定能打开网页界面。它只能本地http://127.0.0.1:18789进行访问,所以现在我们改下
(1)配置远程访问
首先防火墙放行端口- # 放行TCP端口
- sudo ufw allow 18789/tcp
- # 查看规则
- sudo ufw status numbered
复制代码 然后修改~/.openclaw/openclaw.json配置文件
vi openclaw.json
把bind的配置改为lan- "gateway": {
- "mode": "local",
- "auth": {
- "mode": "token",
- "token": "***********"
- },
- "port": 18789,
- "bind": "loopback", // 改为lan
- "tailscale": {
- "mode": "off",
- "resetOnExit": false
- }
- },
复制代码 保存退出后重启应用现在就能在浏览器通过http://你的IP:18789进行访问了。
(2)解决报错
这里发现报错了,openclaw提示 disconnected (1008): control ui requires HTTPS or localhost (secure context)所以什么都操作不了。
继续编辑配置,修改~/.openclaw/openclaw.json配置文件- "gateway": {
- "port": 18789,
- "mode": "local",
- "bind": "lan",
- // 加入下面这行配置
- "controlUi": {
- "allowInsecureAuth": true
- },
- "auth": {
- "mode": "token",
- "token": "*************************************"
- },
- "tailscale": {
- "mode": "off",
- "resetOnExit": false
- },
- "http": {
- "endpoints": {
- "responses": {
- "enabled": true
- }
- }
- }
- }
复制代码 然后重启应用
openclaw gateway restart
现在就不报错,能正常访问了。
(3)修改模型选择
如果要修改模型选择,需要在配置文件进行修改。【使用云平台模型】- openclaw config set 'models.providers.mass' --json '{
- "baseUrl": "https://api.modelarts-maas.com/openai/v1",
- "apiKey": "api值",
- "api": "openai-completions",
- "models": [
- { "id": "DeepSeek-V3", "name": "DeepSeek-V3" },
- { "id": "deepseek-r1-250528", "name": "deepseek-r1-250528" }
- ]
- }'
- 设置 models.mode 为 merge
- openclaw config set models.mode merge
- 设置默认模型(以deepseek-chat为例)
- openclaw models set mass/DeepSeek-V3
- openclaw gateway restart
复制代码- {
- "agents": {
- "defaults": {
- "model": { "primary": "bailian/qwen3-max-2026-01-23" },
- "models": {
- "bailian/qwen3-max-2026-01-23": { "alias": "通义千问 Max Thinking 版" }
- }
- }
- },
- "models": {
- "mode": "merge",
- "providers": {
- "bailian": {
- "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
- "apiKey": "${DASHSCOPE_API_KEY}",
- "api": "openai-completions",
- "models": [
- {
- "id": "qwen3-max-2026-01-23",
- "name": "通义千问 Max Thinking 版",
- "reasoning": false,
- "input": ["text"],
- "cost": { "input": 0.0025, "output": 0.01, "cacheRead": 0, "cacheWrite": 0 },
- "contextWindow": 262144,
- "maxTokens": 65536
- }
- ]
- }
- }
- }
- }
复制代码 第二种:使用本地ollama平台
"my-ollama": {
"baseUrl": "http://127.0.0.1:11434/v1",
"apiKey": "ollama",
"api": "openai-completions",
"models": [
{
"id": "qwen3:32b",
"name": "Local Qwen3 32B",
"reasoning": false,
"input": ["text"],
"contextWindow": 32000,
"maxTokens": 4096,
"cost": {"input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0}
}
]
}
3.使用
openclaw dashboard --no-open ###查看token
浏览器里访问上面截图中带token的那个URL就可以了
再来看看如何用Openclaw来远程登录Linux机器,并执行任务。
首先,你要让Openclaw生成密钥对,并将公钥给到我们- 我要远程登录一台Linux机器,我要使用SSH密钥验证的方式,
- 请生成一对密钥对,并提供给我公钥
复制代码
它不仅提供了公钥内容,还告诉我们如何配置,我把公钥放到了目标服务器上后,然后告诉它可以登录服务器了
然后我再次发出需求
4.nginx反向代理- sudo apt install nginx
- sudo vim /etc/nginx/nginx.conf
- 注释掉如下行
- #include /etc/nginx/sites-enabled/*;
- 上传SSL证书至/etc/nginx/ssl/
- cd /etc/nginx/conf.d/
- sudo vim openclaw_nginx_reverse_proxy.conf
- 添加如下行
- server {
- # 将原有 listen 80 修改为 listen 80 改为 listen 443 ssl
- listen 443 ssl;
- # 原有 server_name,可继续新增更多当前证书支持的域名
- server_name openclaw.openjarvis.net;
- # ======================= 证书配置开始 =======================
- # 指定证书文件(中间证书可以拼接至该pem文件中),请将 /etc/ssl/cert/ssl.pem 替换为您实际使用的证书文件的绝对路径
- ssl_certificate /etc/nginx/ssl/openclaw.openjarvis.net.pem;
- # 指定私钥文档,请将 /etc/ssl/cert/ssl.key 替换为您实际使用的私钥文件的绝对路径
- ssl_certificate_key /etc/nginx/ssl/openclaw.openjarvis.net.key;
- # 配置 SSL 会话缓存,提高性能
- ssl_session_cache shared:SSL:1m;
- # 设置 SSL 会话超时时间
- ssl_session_timeout 5m;
- # 自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
- ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
- # 指定允许的 TLS 协议版本,TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差
- ssl_protocols TLSv1.2 TLSv1.3;
- # 优先使用服务端指定的加密套件
- ssl_prefer_server_ciphers on;
- # ======================= 证书配置结束 =======================
- # 其它配置
- location / {
- proxy_pass http://127.0.0.1:18789;
- # WebSocket升级头
- 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_buffering off;
- # 超时设置
- proxy_read_timeout 86400s;
- proxy_send_timeout 86400s;
- proxy_connect_timeout 30s;
- }
- }
复制代码 5.接入钉钉
安装openclaw-channel-dingtalk插件
插件Github地址:https://github.com/soimy/openclaw-channel-dingtalk- git clone https://github.com/soimy/openclaw-channel-dingtalk.git
- cd openclaw-channel-dingtalk
- openclaw plugins install -l .
复制代码
钉钉应用及机器人
访问 钉钉开发者后台
创建企业内部应用
添加「机器人」能力
配置消息接收模式为 Stream 模式
发布应用
在应用的权限管理页面,需要开启以下权限:
✅ Card.Instance.Write — 创建和投放卡片实例
✅ Card.Streaming.Write — 对卡片进行流式更新 步骤:
进入应用 → 权限管理 搜索「Card」相关权限 勾选上述两个权限 保存权限配置
建立卡片模板 如需使用 AI 互动卡片功能,需要在钉钉卡片平台创建模板:
访问 钉钉卡片平台
进入「我的模板」
点击「创建模板」
卡片模板场景选择 「AI 卡片」
无需选择预设模板,直接点击保存
复制模板 ID(格式如:xxxxx-xxxxx-xxxxx.schema)
在OpenClaw控制台的Channel标签->Dingtalk配置面板-> Card Template Id填入
Client ID (AppKey)
Client Secret (AppSecret)
Robot Code (与 Client ID 相同)
Corp ID (企业 ID)
Agent ID (应用 ID)
9. 重启 Gatewa
10、与机器人进行对话进行验证
Docker 部署 OpenClaw 程教程
使用 Docker Compose- version: '3.8'
- services:
- openclaw:
- image: 1186258278/openclaw-zh:latest
- container_name: openclaw
- ports:
- - "18789:18789"
- volumes:
- - openclaw-data:/root/.openclaw
- restart: unless-stopped
- command: openclaw gateway run
- # 新增优化配置
- environment:
- - TZ=Asia/Shanghai # 统一时区,避免日志时间错乱
- - NODE_ENV=production
- logging: # 日志配置(限制日志大小,避免占满磁盘)
- driver: "json-file"
- options:
- max-size: "100m" # 单个日志文件最大100M
- max-file: "3" # 最多保留3个日志文件
- privileged: false # 非特权模式(提升安全性)
- mem_limit: 1G # 限制容器内存使用(避免占用过多资源)
- volumes:
- openclaw-data:
- driver: local
- ###先执行初始化基础数据的命令
- //1. 手动初始化
- docker-compose run --rm openclaw openclaw setup
- docker-compose run --rm openclaw openclaw config set gateway.mode local
- //2. 配置绑定和认证
- docker-compose run --rm openclaw openclaw config set gateway.bind lan
- docker-compose run --rm openclaw openclaw config set gateway.auth.token YOUR_TOKEN
- //3. 设置模型配置,newapiapp是自定义的供应商名称,配置相应的apikey、baseurl、默认Id,可以设置多个
- docker-compose run --rm openclaw openclaw config set models.providers.newapiapp '{
- "api": "openai-completions",
- "apiKey": "sk-xxxx",
- "baseUrl": "https://api.openai.com/v1",
- "models": [
- {
- "id": "modelscope-k2.5",
- "name": "modelscope-k2.5"
- }
- ]
- }'
- //设置默认主模型,后面的对话就可以默认使用对应供应商的模型了
- docker-compose run --rm openclaw openclaw config set agents.defaults.model.primary "newapiapp/modelscope-k2.5"
- //4. 允许不完全访问,可以通过ip、域名反代等远程访问
- docker-compose run --rm openclaw openclaw config set gateway.controlUi.allowInsecureAuth true
- ###配置初始化完成后,可以启动服务,执行如下命令
- docker-compose up -d
复制代码 使用 Docker Compose 部署
# 启动服务 docker-compose up -d
# 查看日志 docker-compose logs -f
# 停止服务 docker-compose down
# 重启服务 docker-compose restart
8.2 Nginx 反向代理 + HTTPS- # HTTP 80端口:强制跳转到HTTPS
- server {
- listen 80;
- listen [::]:80; # 兼容IPv6(可选,建议加)
- server_name your-domain.com; # 替换为你的实际域名(如openclaw.example.com)
- # 强制HTTPS跳转(保留原请求路径和参数)
- return 301 https://$server_name$request_uri;
- }
- # HTTPS 443端口:代理到openclaw容器(18789端口)
- server {
- listen 443 ssl http2;
- listen [::]:443 ssl http2; # 兼容IPv6
- server_name your-domain.com; # 必须和证书域名一致
- # SSL证书路径(certbot自动生成,无需手动改)
- ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
- # 可选:SSL安全配置(提升HTTPS安全性,建议添加)
- ssl_protocols TLSv1.2 TLSv1.3; # 禁用低版本TLS
- ssl_prefer_server_ciphers on;
- ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
- ssl_session_cache shared:SSL:10m;
- ssl_session_timeout 10m;
- # 反向代理到openclaw容器(localhost:18789)
- location / {
- proxy_pass http://localhost:18789;
- proxy_http_version 1.1;
- # WebSocket兼容(openclaw若用WebSocket,这两行必须加)
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- # 传递客户端真实IP/域名/协议
- 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_cache_bypass $http_upgrade;
- proxy_connect_timeout 30s; # 连接超时(可选优化)
- proxy_send_timeout 30s;
- proxy_read_timeout 30s;
- }
- }
- 完整实操步骤(从安装证书到验证生效)
- 前置条件
- 域名 your-domain.com 已解析到宿主机公网 IP(必须!否则 certbot 无法验证);
- 宿主机 80/443 端口已开放(防火墙 / 安全组需放行);
- Nginx 已安装并运行(systemctl status nginx 确认 active)。
- 步骤 1:安装 Certbot(获取 Let's Encrypt 证书)
- bash
- 运行
- # 更新apt源(避免安装失败)
- sudo apt update
- # 安装certbot和Nginx插件(自动配置Nginx)
- sudo apt install -y certbot python3-certbot-nginx
- 步骤 2:获取 SSL 证书(自动配置 Nginx)
- bash
- 运行
- # 替换为你的实际域名(如openclaw.example.com)
- sudo certbot --nginx -d your-domain.com
- 执行后按提示操作:输入邮箱 → 同意条款 → 是否共享邮箱(选 N) → 选择是否自动跳转 HTTPS(选 2,强制跳转);
- 成功后,certbot 会自动修改 Nginx 配置,无需手动改ssl_certificate路径。
- 步骤 3:验证证书配置
- bash
- 运行
- # 检查Nginx配置语法(避免格式错误)
- sudo nginx -t
- # 重载Nginx配置(无需重启,平滑生效)
- sudo systemctl reload nginx
- # 验证HTTPS是否生效
- curl -I https://your-domain.com
- # 输出包含「Server: nginx」「Strict-Transport-Security」即为成功
- 步骤 4:配置证书自动续期(Let's Encrypt 证书 90 天过期)
- bash
- 运行
- # 测试自动续期(仅测试,不实际续期)
- sudo certbot renew --dry-run
- # 添加定时任务(每天自动检查续期)
- sudo crontab -e
- # 粘贴以下内容(每天凌晨3点检查,证书快过期则自动续期)
- 0 3 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx
复制代码 运维管理
日常管理命令
操作类型
| 命令
| 说明
| 启动
| docker start openclaw
| 启动已停止的容器
| 停止
| docker stop openclaw
| 优雅停止容器
| 重启
| docker restart openclaw
| 重启容器
| 删除
| docker rm -f openclaw
| 强制删除容器(数据卷保留)
| 查看日志
| docker logs -f openclaw
| 实时查看日志
| 进入容器
| docker exec -it openclaw bash
| 进入容器 Shell
| 9.2 版本更新
更新到最新版本
# 1. 停止并删除旧容器 docker stop openclaw && docker rm openclaw
# 2. 拉取最新镜像 docker pull 1186258278/openclaw-zh:latest
# 3. 启动新容器
docker run -d --name openclaw -p 18789:18789 \
-v openclaw-data:/root/.openclaw --restart unless-stopped \
1186258278/openclaw-zh:latest \
openclaw gateway run
9.3 监控与日志
查看容器资源使用
# 查看资源使用情况 docker stats openclaw
# 查看详细信息 docker inspect openclaw
日志管理
# 查看最近 100 行日志 docker logs --tail 100 openclaw
# 查看最近 10 分钟的日志 docker logs --since 10m openclaw
# 导出日志到文件 docker logs openclaw > openclaw.log
# 清理日志(谨慎使用)
docker run --rm -v /var/lib/docker/containers:/containers \
ubuntu find /containers -name "*.json" -type f -size +100M -delete
9.4 完全卸载
# 1. 停止并删除容器 docker stop openclaw && docker rm -f openclaw
# 2. 删除数据卷(⚠️ 会删除所有配置和日志) docker volume rm openclaw-data
# 3. 删除镜像 docker rmi 1186258278/openclaw-zh:latest
# 4. 清理悬空镜像和容器 docker system prune -a
|