0. 背景与目标※
利用一台 15 年前的老旧笔记本作为“大脑”,部署开源智能体 OpenClaw。先在本地环境完成“试水”安装与基础配置,测试其在极低硬件资源下的运行表现。
设备环境※
- 控制端 (本地): 15 年前老旧笔记本 (todtom-old-laptop)
- OS: Ubuntu Server (无 GUI)
- CPU: 约 2011 年代双核处理器
- 内存: 2GB DDR3 (实测初始可用约 1.5GB,含 3.8GB Swap)
- 硬盘: 100GB+ HDD (状态一般)
1. 运行环境准备 (控制端)※
为了压榨 2GB 内存的每一分性能,我们放弃了 Docker 部署,选择直接在宿主机上运行 Node.js。
1.1 系统瘦身※
移除 Ubuntu Server 中占用内存较大的冗余服务(如 Snap):
sudo apt purge snapd -y
sudo apt autoremove -y
sudo apt update && sudo apt upgrade -y1.2 网络环境调试 (避坑指南)※
- 下载并安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
如果一直无响应可能需要配置代理访问,如下,http://<proxy-ip>:<port>改为你的代理地址curl -x http://<proxy-ip>:<port> -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bashgit config --global http.proxy http://<proxy-ip>:<port> git config --global https.proxy http://<proxy-ip>:<port>或者设置环境变量
export http_proxy="http://192.168.x.x:port" export https_proxy="http://192.168.x.x:port"清除代理方法
# 1. 取消系统环境变量 unset http_proxy unset https_proxy # 2. 清除 Git 全局代理配置 git config --global --unset http.proxy git config --global --unset https.proxy # 3. 验证是否清理干净(应无输出) env | grep -i proxy git config --global --get http.proxy 问题记录:尝试使用 curl | bash 脚本安装 nvm 时,配置代理反而导致 Git 报 Proxy CONNECT aborted 错误。 解决方法:
若curl安装失败,则
git clone下载 nvm 源码至~/.nvmgit clone https://github.com/nvm-sh/nvm.git ~/.nvm
1.3 安装 Node.js 24※
# 如果是手动clone的需要加载 nvm 环境变量,如果是利用上面curl命令则可跳过
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc
# 安装 Node.js 24
source ~/.bashrc
nvm install 24
node -v # 实测输出 v24.14.0
1.4 部署 OpenClaw 源码 (源码安装与完整编译)※
注:2GB 内存机器格在编译 TypeScript 时极易触发 OOM (Out of Memory)。为了保证安装的完整性,必须手动分配堆内存上限。
编译源码安装
# 克隆仓库
git clone https://github.com/openclaw/openclaw.git
cd openclaw
# 安装
export NODE_OPTIONS="--max-old-space-size=1800" # 非必须,如果有内存溢出问题需要限制内存占用,若内存4GB以上一般不用限制
# 1. 安装基础工具
npm install -g pnpm
# 2. 安装所有依赖
pnpm install
# 3. 解决编译 OOM 问题并执行完整构建
# 解决方法:手动调高 Node 堆内存上限至 1.5GB (1536MB),强制利用 Swap 空间完成官方标准 build。
npm run build
npm install --production或直接安装
npm install -g openclaw@latest2. OpenClaw 本地初始化配置 (Onboard)※
2.1 内存极限调优记录※
在 2GB 内存环境下跑 onboard 是极大的挑战,过程中多次触发 JavaScript Heap OOM。
- 实测现象: 分配 1536MB 内存时,Node.js 依然抛出
FATAL ERROR: Reached heap limit。监控显示MEM%长期维持在 80% 以上,且由于 Swap 交换剧烈,进程频繁进入D(磁盘等待) 状态,系统负载压力极大。 - 最终对策: 将
max-old-space-size设为 1800MB(2GB 机器的物理极限),并采用 Manual (手动模式) 最小化配置以避开内存峰值。
export NODE_OPTIONS="--max-old-space-size=1800"
node openclaw.mjs onboard --install-daemon
或
openclaw onboard --install-daemon
2.2 手动配置关键细节 (Manual Mode)※
- AI Provider: 配置 API 地址与 Key。使用
glm-4.7-flash模型测试通过。我在配置时使用的是custom provider,配置自己搭建的new-api成功通过。new-api可参考 从零开始:用群晖 NAS 搭建 New-API 并集成智谱 AI 打造全能 AI 编程助手 🛠️ 进阶:如何优雅地配置 New-API 模型重定向(以阿里云大模型服务平台百炼为例) - Gateway Bind: 必须选
LAN (0.0.0.0)。为了方便无 GUI 环境下的远程管理。 - Gateway Auth:
- Method: 选
Token。 - Storage: 选
Generate/store plaintext token。
- Method: 选
- Network Exposure: Tailscale 设为 Off。在内存受限环境下,尽量不增加额外的负载。
- Configure chat channels now?: 选 No。待 Web 启动后配置。
- Search provider: 选 Skip for now。
- 逻辑: 常见的搜索插件(如 Google Search)在国内访问受限,且在 2GB 内存的老机器上,初期跳过可加快部署速度。
- Configure skills now?: 选 No。
- 考量: Skills 插件(如浏览器驱动、Docker 管理等)会消耗额外内存。为了保证核心系统在 2GB 内存下能首启成功,所有非必要组件均留待 Web UI 启动后再按需添加。
- Enable hooks?: 选 Skip for now。
- 理解 Hooks: 钩子是指令触发时的自动化动作(如执行
/reset时自动保存会话记忆)。 - 常见的 Hooks 选项解释:
- session-memory(最推荐):当你开启新会话或重置时,它会自动帮你把之前的对话上下文存入“记忆”。这样 Agent 就能稍微“记起”之前聊过什么。
- command-logger:自动记录你下达的每一条指令。如果你想回溯之前做过什么,这个很有用。
- boot-md:在启动时生成一份 Markdown 格式的状态简报。
- bootstrap-extra-files:在初始化时自动准备一些额外的系统文件。
- 考量: 现阶段目标是最小化开销成功“点亮”系统,Hooks 的内存占用和后台逻辑建议在 Web 端跑通后再开启。
- 理解 Hooks: 钩子是指令触发时的自动化动作(如执行
- Systemd Lingering & Service: 全部选 Yes。
- Lingering: 确保 SSH 断开后进程不被杀掉。
- Gateway Service: 将 OpenClaw 设为开机自启,实现无人值守运维。
3. 实战测试:启动与访问※
3.1 首次启动 (带内存限制)※
配置完成后,系统会生成 config.json。执行以下命令正式启动 Gateway:
export NODE_OPTIONS="--max-old-space-size=1800"
node openclaw.mjs gateway start
# 或者
3.2 远程 Web UI 登录※
- 在你的电脑上打开终端,输入ssh -N -L openclaw_port:127.0.0.1:openclaw_port todtom@openclaw_IP,保持终端不关闭后在同一局域网下的主力机浏览器中访问:
http://localhost:openclaw_port - 在登录页面输入配置阶段生成的 Gateway Token。
- 点亮成功:进入 Web 控制台后,即可使用并通过ui进一步配置。
反向代理※
如果有群晖或者nginx反向代理配置能力的,可以尝试配置局域网内的反向代理,这样就不用每次都ssh连接再访问了,配置如下
编辑.openclaw/openclaw.json,修改gateway部分内容
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789",
"https://群晖IP:18790",
"https://反代:端口"
}
...
}- 群晖反向代理设置:
- 来源:
HTTPS|*| 端口18790。 - 目的地:
HTTP| openclaw的局域网IP |18789。
- 来源:
访问地址:使用
https://你的群晖IP:18790或"https://反代:端口"来打开仪表盘。如果出现pairing required的错误提示,在openclaw中查看设备列表并允许设备配对即可,命令如下openclaw devices list openclaw devices approve <request-id>
关于外网访问※
更建议使用vpn如wireguard、talescale,反向代理一定要https,如果对上述内容不够了解,建议不要搭建就本地访问,连通号telegram或其他聊天工具已成功其实不需外网访问也可以直接使用。我是在使用synology chat连接openclaw时,发现这俩的web hook似乎都需要https链接才可以,没办法配置了反向代理。