OpenClaw 私有化部署:PVE LXC 完整安装与踩坑全记录

阅读时长:18分钟

前言

最近 OpenClaw 特别火,我也准备跟风研究了一下。它最吸引我的一点,就是可以完全当成自己的私人 AI Agent,帮我自动干活—— 不用把数据丢给第三方,全部跑在自己家里的服务器上,隐私、安全、可控性都拉满。

2132055_o8w1ygF6n1.png

简单说,OpenClaw 就是一个私有化部署的个人智能助手。你可以把它理解成一个只属于你自己的专属代理:消息处理、自动化任务、AI 对话、各种重复操作,都能交给它在后台默默搞定。而且它轻量、开源、基于 Node.js,跑在 PVE 的 LXC 里刚刚好,不占资源、稳定性还高。

正好我手里有现成的 PVE环境,干脆就创建全新的LXC装一遍,把完整流程、以及一路上踩过的所有坑都记录下来。后面想自己搭一个私人 Agent 的朋友,可以直接照着这篇避坑。

系统构架

我家的软路由构架,见前文: 从软路由到 Hugo:我的家庭服务器搭建全记录

2137398_S77mLjLjYC.png

之前在玩pve的时候,已经创建了2个LXC模板,一个是Debian核心,一个是Ubuntu核心,这次用Ubantu的模板直接克隆。至于什么是VM什么是LXC,两者的区别,可以自行搜索一下,这里略过。至于LXC模板简单的理解就像Ghost,最开始创建LXC把基础配置(系统升级、SSH、网络配置、环境设置等等)搞好以后就可以转成模板,以后再创建LXC就不用再重新来一遍,直接从模板克隆就ok了。自己玩PVE强烈建议像我这样做两个模板。

克隆以后可以修改配置,采用5G内存、50G硬盘、Swap 512M,设置好网络(ip地址要修改,克隆后默认是原模板的ip地址)后开机。

2151205_K62UkELuyM.png

2151180_Xs8HMGeEbH.png

安装流程

直接SSH登录终端。我用Mobaxterm

2154661_UnwnnjA7t2.png

登录后也可以修改掉默认的原模板的root密码,为了安全最好每个LXC、VM设置不同的root密码。

第一步 先升级系统

sudo apt update && sudo apt upgrade -y

1744596t9LZddtvqOpng

显示已经升级到了最新的状态。

第二步 直接运行官方安装脚本(最推荐)

curl -fsSL https://openclaw.ai/install.sh | bash
  • 这个脚本会:
    • 检查/安装 Node.js(如果没有或版本太旧,会自动从 nodesource 拉最新 22.x 或更高)。
    • 通过 npm 全局安装 openclaw CLI。
    • 安装完成后自动进入 onboarding 向导(或部分情况下会提示你运行下一步)。

第一个坑:

2002569BTi26U5IeMpng

运行后报错。这是 Ubuntu 22.04(jammy)常见问题:系统自带的 curl 版本偏旧(通常 7.81.x 或 7.88.x),搭配 OpenSSL 3.0.x 时,对某些服务器的 TLS 连接处理严格,导致“意外 EOF”视为错误(OpenSSL 3 加强了 truncation attack 防护,但旧 curl 没完全适配)。

推荐方案:手动安装 Node.js 22(最稳、最快)

在终端执行下面命令:

  1. 添加 NodeSource 仓库(这步用 apt,不依赖 curl):

    apt update
    apt install -y ca-certificates curl gnupg   # 确保 ca-certificates 最新
    mkdir -p /etc/apt/keyrings
    curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
    
  2. 添加 Node 22 源:

    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
    
  3. 更新并安装 Node.js:

    apt update
    apt install -y nodejs
    
  4. 验证 Node 版本(必须 ≥22):

    node -v   # 应该输出 v22.x.x 或更高
    npm -v
    

2014049wCsimU2IOypng

Command ’npm’ not found表示npm还没有安装,需要安装

   apt update
   apt install npm

2012236LHRlZz0dRipng

表示环境都已装好。

第二个坑:

现在可以全局安装 OpenClaw:

npm install -g openclaw@latest

2044737sWN4zcIiqjpng

报错了,可能原因:

  • LXC 网络桥接(vmbr0)配置小问题,导致 TLS 握手过程中包丢失或超时。
  • 容器 DNS 解析慢/不稳(/etc/resolv.conf 指向主机或不靠谱的服务器)。
  • MTU 不匹配(Proxmox 默认 1500,但有些桥接或 ISP 碎片化导致 TLS 包被丢)。
  • 临时网络抖动、Proxmox 主机负载、或 registry.npmjs.org 那边短暂问题。
  • 极少数是旧 OpenSSL/curl + Node 兼容。

测试一下:

root@openclaw:~# curl -I https://registry.npmjs.org/openclaw 
curl: (35) error:0A000126:SSL routines::unexpected eof while reading

这个 curl: (35) error:0A000126:SSL routines::unexpected eof while reading 错误是 Ubuntu 22.04(jammy)上非常典型的 OpenSSL 3.0 + 旧版 curl 的兼容问题。

  • Ubuntu 22.04 自带 curl 7.81.0(或类似旧版),而 OpenSSL 3.0.x 对 TLS 连接的“意外 EOF”(服务器没发 close_notify 就断开)处理更严格,导致 curl 把这当成错误。
  • npm install 底层也用类似机制(Node.js 的 https 模块依赖 OpenSSL),所以你看到 ECONNRESET(连接被重置)。
  • registry.npmjs.org 有些响应就是这样(服务器主动关闭连接),旧 curl/OpenSSL 组合就报错。

升级 curl 到最新版(永久解决,推荐如果上面临时方案嫌麻烦) Ubuntu 22.04 的 curl 太旧,手动编译最新 curl(8.x+ 已修复兼容):

apt update
apt install -y build-essential libssl-dev zlib1g-dev libnghttp2-dev libssh2-1-dev libidn2-0-dev libpsl-dev libkrb5-dev libcurl4-openssl-dev autoconf libtool pkg-config
cd /tmp
wget https://curl.se/download/curl-8.10.1.tar.gz   # 或查最新版 https://curl.se/download/
tar xzf curl-8.10.1.tar.gz
cd curl-8.10.1
./configure --with-openssl --with-nghttp2 --prefix=/usr/local
make -j4
make install
ldconfig

升级了curl还是报错。

第三个坑:

换方案:先用临时环境变量绕过(无需编译,立即见效)

在终端里运行:

export OPENSSL_CONF=/dev/null
npm install -g openclaw@latest
  • 为什么有效?这个 env var 会让 OpenSSL 忽略 unexpected EOF(临时把严格模式关掉),npm 继承后就能正常下载包。

确实可以了

2044644hAXDI0FqiQpng

现在安装中…

但是感觉速度很慢

加速的几个实用办法(现在可以试)

  • 切换到淘宝镜像(中国用户最有效,速度能翻几倍):

    npm config set registry https://registry.npmmirror.com
    # 然后继续原来的安装命令(不用重跑 export,因为已经 export 过了)
    npm install -g openclaw@latest
    

    (如果已经在跑,可以 Ctrl+C 中断,再跑这个 config + 重新 install,它会从缓存继续,不会全重下。)

第四个坑:

确实很快,不幸的是又报错了

2057832Pd8NjLsimEpng

问题很清楚:你当前的 Node.js 版本是 v12.22.9(npm 8.5.1),但 OpenClaw 要求 Node ≥22(官方文档和 npm 包都明确指定 Node 22 或更高)。

  • 错误核心:@whiskeysockets/baileys(OpenClaw 依赖的 WhatsApp 多设备协议库)在 postinstall 脚本里检查 Node 版本,如果 <20 就直接报错退出(This package requires Node.js 20+)。
  • 其他 WARN(如 minimatch@9、p-timeout@7 等)也是因为这些新包的 engines 要求 Node 14/16/20+,v12 完全不兼容。
  • 切换淘宝镜像后下载快了,但版本不匹配导致安装失败。

你的 LXC 是 Ubuntu 22.04,默认 apt 安装的 Node 可能是旧版(或之前手动装错了)。需要升级/重装 Node 到 22.x。

推荐步骤(在 终端执行)

  1. 先卸载旧 Node(清理干净,避免冲突):

    apt remove --purge nodejs npm -y
    apt autoremove -y
    rm -rf /usr/local/bin/node /usr/local/bin/npm /usr/local/lib/node_modules
    rm -rf /root/.npm /root/.node-gyp
    hash -r   # 刷新命令缓存
    
  2. 用 NodeSource 官方脚本安装 Node 22.x(最稳,官方推荐):

    curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
    apt update
    apt install -y nodejs
    

    这会自动加源、装 Node 22 + npm 最新。

还是报错,最后手工下载安装成功!

  1. 用 HTTP 临时拉取 deb 包(绕过 HTTPS) 先手动下载 deb 包(用新 curl):
cd /tmp
/usr/local/bin/curl -O https://deb.nodesource.com/node_22.x/pool/main/n/nodejs/nodejs_22.22.0-1nodesource1_amd64.deb
  • 如果下载成功(文件大小 ~37MB),直接 dpkg 安装:

    dpkg -i nodejs_22.22.0-1nodesource1_amd64.deb
    apt install -f -y   # 修复依赖
    
  1. 装好后再次验证

运行下面两条命令确认:

node -v
npm -v

2106601Sg4vljW3wNpng

环境终于ok了

再次安装

现在网络问题和 Node 版本问题都解决了,安装应该很顺:

  1. 保持淘宝镜像加速(你之前切过):

    npm config get registry   # 确认是 https://registry.npmmirror.com
    
  2. 清理缓存 + 安装(推荐用 –force 避免旧缓存干扰):

    npm cache clean --force
    npm install -g openclaw@latest
    

最终成功。

版本验证:openclaw –version 2026.2.22-2

2118396DFy5fIHko5png

128 packages are looking for funding   run npm fund for details 这是什么意思 要管他吗

完全不用管它,可以忽略。

这是什么意思?

  • npm 在安装包时,会统计你安装的依赖包里,有多少个包的作者/维护者开启了“寻求资助”(funding)的选项。
  • 这些包通常会在它们的 package.json 里加一个 funding 字段,指向 Patreon、GitHub Sponsors、Buy Me a Coffee、Open Collective 等捐款链接。
  • “128 packages” 就是说,这次安装的 703 个包里,有 128 个作者公开说“欢迎支持我”。
  • 这是一个友好提醒,不是错误、不是警告、不是问题,只是 npm 的一个小功能(从 npm 6+ 开始就有)。

要不要运行 npm fund?

  • 不用。运行它只会列出那些 128 个包的捐款链接(比如作者的 GitHub Sponsors 页面),让你手动去捐款。
  • 99% 的用户都不会运行它,也不会捐款(开源包作者也知道这很正常)。
  • 除非你特别喜欢某个包,想支持作者,否则完全可以无视。

怎么让它别再显示?

如果你觉得这个提示烦人(下次 install/update 时还会出现),可以全局关掉:

npm config set fund false
  • 这样以后所有 npm 操作都不会再显示 “packages are looking for funding” 了。
  • 如果以后想恢复:npm config delete fund 或 npm config set fund true。

总结

  1. 核心坑点:Ubuntu 22.04 的 curl+OpenSSL 3.0 兼容问题、Node.js 版本低于 22 的兼容性问题、LXC 网络 / DNS 导致的 npm 下载失败;
  2. 关键解决方案:临时设置OPENSSL_CONF=/dev/null绕过 SSL 校验、切换淘宝 npm 镜像提速、彻底重装 Node.js 22.x 确保版本达标;
  3. 无关提示:npm 的 funding 提醒仅为开源作者捐款引导,可直接忽略或全局关闭。

© 2026 softon.top

本站已稳定运行 307 天 9 小时 · 147 篇文章

使用 Hugo 构建 主题 Stack 由 Jimmy 设计 由 softon 魔改

最近构建时间:2026-11-04 17:21:05 CST