容器内升级OpenClaw 在Docker容器内升级OpenClaw时,关键步骤是以root用户身份进入容器。默认的docker run命令会以node用户启动,可能导致后续权限操作问题。因此,请务必使用-u root参数。 进入容器后,执行以下命令序列完成升级: # 1. 强制安装最新版并覆盖旧链
在Docker容器内升级OpenClaw时,关键步骤是以root用户身份进入容器。默认的docker run命令会以node用户启动,可能导致后续权限操作问题。因此,请务必使用-u root参数。
进入容器后,执行以下命令序列完成升级:
长期稳定更新的攒劲资源: >>>点此立即查看<<<
# 1. 强制安装最新版并覆盖旧链接
npm install -g openclaw@latest --force --registry=https://registry.npmmirror.com
# 2. 建立目录软链接(将 npm 全局路径映射到 app 工作目录)
rm -rf /app/dist /app/node_modules
ln -sf /usr/local/lib/node_modules/openclaw/dist /app/dist
ln -sf /usr/local/lib/node_modules/openclaw/node_modules /app/node_modules
# 3. 清理旧版模型缓存(激活 128k 规格的关键)
rm -f /root/.openclaw/models.json
# 4. 权限归属与启动
chown -R node:node /root/.openclaw
exec node /app/dist/index.js gateway
需注意一个细节:通过
npm install升级OpenClaw Gateway后,Web UI的前端文件不会自动指向新目录/usr/local/lib/node_modules/openclaw/dist。这会导致openclaw --version显示版本已更新,但Web UI界面仍是旧版本。解决方法是通过手动建立软链接,将新版本目录覆盖到旧路径。
升级过程中可能遇到以下典型问题:
| 报错信息 | 问题说明 | 解决方案 |
|---|---|---|
Missing config. Run openclaw setup or set gateway.mode=local (or pass --allow-unconfigured). |
配置文件已配置但无法读取,需检查当前用户,启动命令会在当前用户目录下的.openclaw中查找json文件 |
切换到对应用户 |
| npm error code EEXIST、npm error path /usr/local/bin/openclaw、npm error EEXIST: file already exists | openclaw二进制文件已存在,无法直接覆盖 | 在npm install -g openclaw@latest命令后添加--force参数 |
| 若仅需本地访问 | - | 将bind的值从lan改为loopback |
如果误操作导致OpenClaw无法启动,可通过以下启动命令直接重建一个基于最新版本OpenClaw的容器。此命令模拟了官方docker-setup.sh脚本拉取openclaw:local镜像并初始化的过程。
docker run -d \
--name openclaw-prod \
--restart unless-stopped \
-u root \
--memory=8g \
-p 18789:18789 \
-p 18790:18790 \
-v /root/.openclaw:/root/.openclaw \
-v /root/.openclaw/workspace:/root/.openclaw/workspace \
-e NODE_ENV=production \
-e NODE_OPTIONS="--max-old-space-size=4096" \
--entrypoint "/bin/sh" \
openclaw:local \
-c "npm install -g openclaw@latest --force --registry=https://registry.npmmirror.com && \
rm -rf /app/dist /app/node_modules && \
ln -sf /usr/local/lib/node_modules/openclaw/dist /app/dist && \
ln -sf /usr/local/lib/node_modules/openclaw/node_modules /app/node_modules && \
exec node /app/dist/index.js gateway"
重建或配置时,openclaw.json配置文件中的gateway部分是核心,其典型结构如下:
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"enabled": true,
"allowedOrigins": [
"http://物理机ip:18789",
"http://127.0.0.1:18789",
"http://localhost:18789"
],
"dangerouslyAllowHostHeaderOriginFallback": true,
"allowInsecureAuth": true,
"dangerouslyDisableDeviceAuth": true
},
"auth": {
"mode": "token",
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #gateway授权token
},
"trustedProxies": ["192.168.65.0/24", "172.18.0.0/16"],
"tailscale": {
"mode": "off",
"resetOnExit": false
},
"nodes": {
"denyCommands": [
"camera.snap",
"camera.clip",
"screen.record",
"contacts.add",
"calendar.add",
"reminders.add",
"sms.send"
]
}
},
此外,openclaw.json中的tools部分涉及工具调用与安全策略,典型配置示例如下:
"tools": {
"profile": "coding",
"exec": {
"host": "gateway",
"security": "full",
"ask": "on-miss"
}
},
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述