家里有一个闲置的树莓派,一直只是作为家庭影音共享中心,现在拿来部署 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