家里有一个闲置的树莓派,一直只是作为家庭影音共享中心,现在拿来部署 OpenClaw 正合适。

整个部署过程需要树莓派能科学上网,如果不会,可以参考我的另一篇教程:Linux 环境下快速安装 Clash

为了树莓派本身系统的安全性,不建议直接在树莓派上安装 OpenClaw,而是通过 Docker 部署,这样可以避免很多潜在的安全风险。树莓派中安装 Docker 的教程可以参考:树莓派/Debian 系统快速安装 Docker

使用 Docker 安装 OpenClaw 有两种,一种是直接拉取构建好的镜像,另一种是自己构建镜像,我这里使用自己构建。

Docker 构建的时候需要拉取镜像,在没有使用国内镜像的情况下,需要配置 Docker 的代理,可以参考:Linux 环境下为 Docker 配置系统代理

1. 基础安装

首先克隆仓库并运行初始化脚本:

git clone https://github.com/openclaw/openclaw.git
cd openclaw && sudo chmod +x docker-setup.sh && sudo ./docker-setup.sh

没有意外的情况下,整个构建过程可能需要 10~15 分钟,如果中途构建失败,大概率是网络问题,参考文首教程。

构建完成后终端会自动进入配置过程,其实就是配置对话设备、模型、代理等信息,根据提示一步步操作就行,这里不再赘述。

配置完成后的终端提示中,会有 Token,这是通过 UI 访问 OpenClaw 的凭证,需要保存好。

通过 Docker 部署后,OpenClaw 默认的卷映射路径在 /root/.openclaw,这是 OpenClaw 的配置文件和项目文件存放的位置。

2. 环境配置(根据自己的情况选择)

网络与代理

如果使用的不是国产 AI,需要为 OpenClaw 配置代理,否则会影响 OpenClaw 的正常使用。

Docker 中的 OpenClaw 默认并不会使用宿主机的代理(上面为 Docker 配置的只是 Docker 构建用的),需要在 openclaw 目录下的 docker-compose.yml 中加入以下配置:

services:
  openclaw-gateway:
    environment:
      # Docker 部署使用宿主机代理
      HTTP_PROXY: http://host.docker.internal:7890
      HTTPS_PROXY: http://host.docker.internal:7890
    extra_hosts:
      # 为了使 host.docker.internal 在 Linux 下生效
      - "host.docker.internal:host-gateway"

配置修改后需要重启 OpenClaw 服务:

cd openclaw && docker compose up --force-recreate openclaw-gateway -d

控制台访问

树莓派在这里主要作为服务器,要在局域网内其他电脑访问 OpenClaw 控制台,需要将树莓派的局域网 IP 地址加入白名单。

因为 OpenClaw 的配置文件映射在宿主机的 /root/.openclaw 目录下,所以不需要进入容器,直接在 /root/.openclaw/openclaw.json 中添加如下内容即可:

{
	"gateway": {
		"controlUi": {
			"allowedOrigins": ["http://192.168.1.32:18789"]
		}
	}
}

192.168.1.32 是我树莓派的局域网 IP,需要替换成你自己的。18789 是 OpenClaw UI 控制台的默认端口,没有修改的话直接填这个就行。

设置完成后就可以在局域网其他设备上通过 http://192.168.1.32:18789 访问 OpenClaw 控制台了,填入安装过程中得到的 Token 即可登录。

由于本地部署没有 https,登录过程会受阻(可以使用 SSH 隧道、证书、Nginx 反代等方式解决),这里粗暴一点,直接在 Chrome 中添加不安全来源白名单:

在浏览器地址栏输入 chrome://flags/#unsafely-treat-insecure-origin-as-secure,将 http://192.168.1.32:18789 填入白名单重启浏览器就行。

这里还会有新问题,OpenClaw 有双重验证,并不是谁拿着 Token 都能访问,需要对浏览器进行配对,详细见下面的新设备配对

新增卷映射

通常情况下我不会调整 OpenClaw 官方预设的目录,有需要的情况下我会新增自定义目录,比如 project,用于集中保存让 OpenClaw 开发的项目。

为了方便管理,我将 project 目录放在了 /root/project,通过卷映射的方式让 OpenClaw 访问该目录。

由于容器内默认以 node 用户(UID 1000)运行,需要为 /root/project 授予相应权限:

# 授权容器(UID 1000)访问该目录
sudo chown -R 1000:1000 /root/project
sudo chmod -R 755 /root/project

openclaw/docker-compose.yml 中新增卷:

services:
  volumes:
    - ${OPENCLAW_PROJECTS_DIR}:/home/node/projects

openclaw/.env 中新增变量:

OPENCLAW_PROJECTS_DIR=/root/project

重启 OpenClaw 服务:

cd openclaw && docker compose up --force-recreate openclaw-gateway -d

3. 新设备配对

部署完成后,需要手动批准新设备的连接请求。先进入容器,再通过命令行操作:

# 进入网关容器
# openclaw-openclaw-gateway-1 是默认的容器名,如果修改过请替换
docker exec -it openclaw-openclaw-gateway-1 /bin/bash

# 查看待审批列表
openclaw devices list

# 批准特定设备(将 <Request ID> 替换为实际 ID)
openclaw devices approve <Request ID>

4. 升级

OpenClaw 的更新较为频繁,我通常不会每个版本都更新,毕竟构建安装每次都要等很久:

# 在 openclaw 目录下拉取最新代码
cd /download/openclaw && sudo git pull

# 重新构建镜像,使用 --platform linux/arm64 构建指定平台镜像
sudo docker build -t openclaw:local -f Dockerfile .

# 重启服务
sudo docker compose up --force-recreate openclaw-gateway -d

5. 常用维护命令

记录几个日常维护会用到的操作:

# 代理连通性测试
curl -I https://www.google.com

# 强制重启网关服务
docker compose up --force-recreate openclaw-gateway -d

# 快速进入容器 shell
docker exec -it openclaw-openclaw-gateway-1 /bin/bash

# 导出镜像
docker save -o openclaw.tar openclaw:local

# 导入镜像
docker load -i openclaw.tar

# 加载镜像并重启容器
docker load -i openclaw.tar && docker compose up --force-recreate openclaw-gateway -d