树莓派部署 OpenClaw:型号怎么选、swap 怎么加、SD 卡为什么是最大隐患
想找一台常年开着、不吵不费电的机器托管 OpenClaw 网关,树莓派是最先被想到的选项。但一提到”在树莓派上跑 AI”,很多人第一反应是它带不动——这个担心在这里其实不成立。
官方文档把前提讲得很直白:Pi 上跑的只是网关,模型通过 API 在云端跑。网关本身干的是收发消息、调度会话、转发请求这类活,不需要显卡也不需要大内存。文档给的硬件成本口径是一次性 35 到 80 美元,没有月租。
真正会让你翻车的不是算力,是另外几件事:系统装成了 32 位、内存到了 2 GB 以下却没加 swap、状态目录留在 SD 卡上、以及退出 SSH 之后服务跟着没了。下面按官方文档一条条过。
型号对照:哪些能跑,哪个别试
文档直接给了一张兼容性表,照抄如下:
| Pi 型号 | 内存 | 能跑吗 | 说明 |
|---|---|---|---|
| Pi 5 | 4/8 GB | 最佳 | 最快,推荐 |
| Pi 4 | 4 GB | 良好 | 多数人的甜点位 |
| Pi 4 | 2 GB | 可以 | 需要加 swap |
| Pi 4 | 1 GB | 紧张 | 加 swap 加最小配置可行 |
| Pi 3B+ | 1 GB | 慢 | 能跑但迟钝 |
| Pi Zero 2 W | 512 MB | 不行 | 不推荐 |
最低要求是 1 GB 内存、1 核、500 MB 空闲磁盘、64 位系统;推荐配置是 2 GB 以上内存、16 GB 以上的 SD 卡(或者 USB SSD)、有线以太网。
这张表里值得单独拎出来的是最后一行。Pi Zero 2 W 官方明确写了不推荐,别抱着”512 MB 加 swap 硬撑一下”的想法去试。另外 Pi 3B+ 那行写的是”能跑但迟钝”,如果你手头只有这个,心里先有个预期。
准备清单里还有两条容易被忽略:一是要用官方电源适配器,二是必须 64 位的 Raspberry Pi OS,文档特别标注了不要用 32 位。刷卡的时候在 Imager 里选的是 Raspberry Pi OS Lite (64-bit)——Lite 版没有桌面,做无头服务器本来也用不上。
刷卡阶段可以在 Imager 的设置里预先配好主机名(文档示例用的是 gateway-host)、打开 SSH、设好用户名密码、需要的话配上 WiFi。这些提前填了,插卡开机就能直接 SSH 进去,省得再接显示器。
装系统依赖:时区这一步别跳
SSH 进去之后先更新系统、装编译工具链,然后设时区:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl build-essential
# Set timezone (important for cron and reminders)
sudo timedatectl set-timezone America/Chicago
时区那行文档特意加了注释说”对 cron 和提醒很重要”。这不是走过场——定时任务和提醒都按系统时区算,一台刚刷完系统的 Pi 时区大概率不是你要的,等到定时任务在半夜触发才发现就晚了。国内部署把最后那个参数换成自己所在的时区即可,命令本身不变。
接着装 Node.js 26:
curl -fsSL https://deb.nodesource.com/setup_26.x | sudo -E bash -
sudo apt install -y nodejs
node --version
2 GB 以下必须加 swap
这是低配设备上最关键的一步。文档把它单列成一个步骤,标题就写着”重要:2 GB 或更少内存必加”:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Reduce swappiness for low-RAM devices
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
两个细节:写进 /etc/fstab 那行是为了重启后 swap 还在,漏了就成了一次性的;vm.swappiness=10 是把内核换出内存的倾向调低,文档给低内存设备就是这个值。
后面排查章节里”内存不足”那条对应的检查命令是 free -h,先确认 swap 真的启用了,再去关掉用不上的服务。
安装与开机自启
装 OpenClaw 本体和跑引导向导:
curl -fsSL https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon
--install-daemon 这个参数是关键,它把网关装成 systemd 用户服务。关于四种安装方式各自适合什么场景,可以看安装方式怎么选那篇,树莓派这条线走的是安装脚本。
向导里有两个官方建议:无头设备优先用 API key 而不是 OAuth(没有浏览器的机器走 OAuth 会很别扭),渠道从 Telegram 起步最省事。
装完验证三条命令:
openclaw status
systemctl --user status openclaw-gateway.service
journalctl --user -u openclaw-gateway.service -f
这里有个无头 Pi 专属的坑:systemd 用户服务默认会随着用户登出而停掉。文档在两个地方都提到了同一条命令——启用 lingering,让用户服务在退出登录后继续活着:
sudo loginctl enable-linger "$(whoami)"
只需要执行一次。如果你遇到”服务起不来”或者”SSH 断开一会儿机器人就不回话了”,先查这条。
编译缓存和 systemd drop-in
文档在性能一节给了两个环境变量,都是针对低功耗主机的:
grep -q 'NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache' ~/.bashrc || cat >> ~/.bashrc <<'EOF'
export NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache
mkdir -p /var/tmp/openclaw-compile-cache
export OPENCLAW_NO_RESPAWN=1
EOF
source ~/.bashrc
NODE_COMPILE_CACHE 让重复调用 CLI 更快;OPENCLAW_NO_RESPAWN=1 让网关的常规重启留在进程内完成,不再多做一次进程交接,在小主机上也让 PID 追踪更简单。
路径要用 /var/tmp 而不是 /tmp,文档给的理由是有些发行版开机会清空 /tmp,那样每次重启缓存就白热了。
如果这台 Pi 基本就是专门跑 OpenClaw 的,文档还建议加一个服务 drop-in:
systemctl --user edit openclaw-gateway.service
[Service]
Environment=OPENCLAW_NO_RESPAWN=1
Environment=NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache
Restart=always
RestartSec=2
TimeoutStartSec=90
改完执行 systemctl --user daemon-reload && systemctl --user restart openclaw-gateway.service。TimeoutStartSec=90 这个值比默认宽松,考虑的就是低速设备启动慢的情况。
从自己的电脑访问控制台
Pi 是无头的,控制台要从本机浏览器开。文档给的路子是先从 Pi 拿地址,再打 SSH 隧道:
ssh user@gateway-host 'openclaw dashboard --no-open'
ssh -N -L 18789:127.0.0.1:18789 user@gateway-host
第一条里的 --no-open 是让它只打印地址、不去尝试在 Pi 上开浏览器。第二条把本地 18789 端口转发到 Pi 上的同名端口,然后在本地浏览器打开第一条打印出来的地址。
这套隧道适合临时用。文档说想要长期的远程访问,走 Tailscale 集成,具体几条路的差别见远程访问怎么做。
SD 卡是最大的长期隐患
性能一节第一条就是换 USB SSD。文档给的理由有两个:SD 卡慢,而且会被写坏。SSD 既明显改善性能,也扛得住更多写入周期。
如果你不想动系统盘,还有个折中办法——系统留在 SD 卡上,把 OPENCLAW_STATE_DIR 指到 USB SSD。OpenClaw 的状态目录是写入最频繁的地方:
~/.openclaw/:openclaw.json、每个 agent 的auth-profiles.json、渠道与供应商状态、会话数据~/.openclaw/workspace/:agent 工作区,SOUL.md、记忆、产出物都在这
这些数据重启后仍在,但正因为它们是全部身家,放在 SSD 上无论性能还是寿命都更稳妥。做快照用备份命令:
openclaw backup create
openclaw backup restore <archive.tar.gz> --target <fresh-directory>
restore 会校验并解压到一个全新的暂存目录,激活是另一个单独的离线步骤——这点文档写得很明确,恢复不等于生效。回滚警告和激活顺序的完整说明在备份文档里,也可以参考更新、回滚与卸载。
模型:别在 Pi 上跑本地模型
文档态度很干脆:Pi 只跑网关,用云端 API 模型,不要在 Pi 上跑本地 LLM,即使小模型也慢到没有实用价值。
给出的配置示例是这样:
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-6",
"fallbacks": ["openai/gpt-5.4-mini"]
}
}
}
}
primary 加 fallbacks 的结构是通用的模型故障转移写法,这里只是给了一组示例值,换成你自己有额度的供应商同理。
ARM64 二进制:出问题的通常不是主程序
文档说大多数 OpenClaw 功能在 ARM64 上不用改动就能用,Node.js、Telegram、WhatsApp(Baileys)、Chromium 都在列。偶尔缺 ARM 构建的,一般是技能附带的可选 Go/Rust 命令行工具。
判断方法是固定的:先 uname -m 确认架构(应该显示 aarch64),再去那个二进制的 release 页面找有没有 linux-arm64 / aarch64 的产物,都没有再考虑从源码构建。
对应的报错特征也很明确——某个技能失败时提示 exec format error,基本就是这类架构不匹配。
官方排查清单对号入座
文档最后那节按症状列了五条,整理成表:
| 症状 | 官方给的第一步 |
|---|---|
| 内存不足 | free -h 确认 swap 已启用;sudo systemctl disable cups bluetooth avahi-daemon 关掉用不上的服务;只用 API 模型 |
| 性能慢 | 换 USB SSD;vcgencmd get_throttled 查 CPU 降频,应返回 0x0 |
| 服务起不来 | journalctl --user -u openclaw-gateway.service --no-pager -n 100 看日志;openclaw doctor --non-interactive;无头机器确认 lingering 已开 |
| ARM 二进制问题 | 看有没有 ARM64 构建;uname -m 应为 aarch64 |
| WiFi 掉线 | sudo iwconfig wlan0 power off 关掉 WiFi 省电模式 |
另外文档在减少内存占用一节给了两条无头场景专用的设置:释放 GPU 显存、关掉蓝牙。
echo 'gpu_mem=16' | sudo tee -a /boot/config.txt
sudo systemctl disable bluetooth
doctor --non-interactive 那条在无人值守场景下尤其顺手,怎么读它的输出可以看 doctor 体检怎么读。
什么时候树莓派方案不适用
几个边界要说清楚。
想在本地跑模型的,这条路走不通。 文档明确劝退了本地 LLM,Pi 方案的成立前提就是模型在云端,所以你还是得有 API 额度和一条稳定的出网链路。
Pi Zero 2 W 和更低配的板子不在讨论范围。 官方标的是”不推荐”,不是”需要调优”。
32 位系统没有变通办法。 文档写的是”必需”,不是”建议”,装错了只能重刷。
还有几件文档没有覆盖的:完整流程给的预估时间是”大约 30 分钟”,但没有给任何具体的运行期性能数字,比如响应延迟、并发会话上限、长期内存占用曲线——这些官方文档没有说明,谁给你一个确切数字都要打个问号。多渠道同时接入之后 2 GB 机器还够不够用,同样得自己跑一段时间才知道。
真要动手,建议的顺序是:先用 4 GB 的 Pi 4 或 Pi 5 加 USB SSD 把链路跑通,只接一个 Telegram,稳定几天之后再往上加渠道和技能。低配机器上遇到的怪问题,十有八九能追溯到这篇里的某一条——swap、时区、lingering、SD 卡。
延伸阅读
- 从头读起:OpenClaw 架构总览:网关、Agent、渠道、节点、插件五层各管什么,出问题该往哪查
- 本专题共 40 篇,完整分组目录见专题页
- 在 Windows 上跑 OpenClaw:Hub、原生 CLI 与 WSL2 三条路怎么选、怎么避坑
- OpenClaw macOS 应用要哪些系统权限:屏幕、麦克风、语音、自动化、辅助功能逐项对照
本文依据 OpenClaw 官方仓库(github.com/openclaw/openclaw)docs/ 下的官方文档整理,核对日 2026-08-17。
我们没有安装或运行过 OpenClaw,因此不涉及界面外观、操作手感与实测耗时的任何描述;
文中的默认值、命令与配置项均为文档口径,不构成对实际运行结果的保证。
该项目迭代很快,请以仓库最新内容为准。接入即时通讯平台前,请自行确认所在平台的规则与合规要求。