绿联云 NAS 安装 OpenClaw 简明指南
本文记录在绿联云 NAS(UGOS Pro)上通过 Docker Compose 部署 OpenClaw,并接入 OpenAI 兼容模型接口的过程。
1. 准备目录
bash
sudo mkdir -p \
/volume1/docker/openclaw/data \
/volume1/docker/openclaw/auth-profile-secrets \
/volume1/AIWorkspace/openclaw
2. 创建 Docker Compose
在 /volume1/docker/openclaw/docker-compose.yml 中写入:
yaml
services:
openclaw-gateway:
# OpenClaw 官方容器镜像。
# 初次测试可以使用 latest;稳定运行后建议固定具体版本号,避免自动更新造成兼容问题。
image: ghcr.io/openclaw/openclaw:latest
# 固定容器名称,方便在绿联云管理界面中查找。
container_name: openclaw
# NAS 或 Docker 重启后自动启动;手动停止后不会自动拉起。
restart: unless-stopped
# 使用轻量 init 进程,正确回收子进程,建议保留。
init: true
ports:
# NAS 端口:容器端口。
# 局域网通过 http://NAS_IP:18789 访问。
- "18789:18789"
environment:
# 容器内 node 用户的主目录。
HOME: /home/node
OPENCLAW_HOME: /home/node
# 时区,可根据实际所在地修改。
TZ: Asia/Shanghai
# 改善容器终端输出兼容性。
TERM: xterm-256color
# OpenClaw 状态、配置和工作区路径。
OPENCLAW_STATE_DIR: /home/node/.openclaw
OPENCLAW_CONFIG_DIR: /home/node/.openclaw
OPENCLAW_CONFIG_PATH: /home/node/.openclaw/openclaw.json
OPENCLAW_WORKSPACE_DIR: /home/node/.openclaw/workspace
# 网关访问令牌。
# 请在绿联云项目环境变量或同目录 .env 文件中设置,不能留空。
OPENCLAW_GATEWAY_TOKEN: "${OPENCLAW_GATEWAY_TOKEN}"
# Docker 桥接网络通常无法正确传递 Bonjour/mDNS,NAS 环境建议关闭。
OPENCLAW_DISABLE_BONJOUR: "1"
volumes:
# OpenClaw 配置、状态、身份信息和会话数据。
- /volume1/docker/openclaw/data:/home/node/.openclaw
# OAuth/API 身份资料的本地加密密钥,建议单独持久化并妥善备份。
- /volume1/docker/openclaw/auth_profile_secrets:/home/node/.config/openclaw
# Agent 工作区。这个独立挂载会覆盖上面 data 目录中的 workspace 子目录。
- /volume1/docker/openclaw/workspace:/home/node/.openclaw/workspace
command:
# 使用官方当前 Docker Compose 的启动入口。
- node
- dist/index.js
- gateway
# Docker 端口映射要求监听容器所有网络接口。
- --bind
- lan
# 网关在容器内部监听的端口。
- --port
- "18789"
# 如果需要让容器访问 NAS 上运行的 Ollama 或 LM Studio,可保留此项。
# 容器内可使用 http://host.docker.internal:11434 访问 NAS 的 Ollama。
extra_hosts:
- "host.docker.internal:host-gateway"
# 定期检测网关是否正常。
healthcheck:
test:
- CMD
- node
- -e
- "fetch('http://127.0.0.1:18789/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
interval: 30s
timeout: 5s
retries: 5
start_period: 20s
# 禁止进程获得额外权限。
security_opt:
- no-new-privileges:true
# 移除网关不需要的网络能力。
cap_drop:
- NET_RAW
- NET_ADMIN
# 控制 Docker 日志大小,避免长期运行占满 NAS 空间。
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
3. 设置网关令牌
在 /volume1/docker/openclaw/.env 中写入:
dotenv
OPENCLAW_GATEWAY_TOKEN=请替换为高强度随机令牌
可使用以下命令生成:
bash
openssl rand -hex 32
不要公开网关令牌或模型 API Key。
4. 首次初始化
进入项目目录:
bash
cd /volume1/docker/openclaw
使用管理员权限运行初始化向导:
bash
sudo docker compose run --rm --no-deps \
--entrypoint node \
openclaw-gateway \
dist/index.js onboard \
--mode local \
--no-install-daemon
自定义 OpenAI 兼容模型的填写示例:
text
Model/auth provider: More... → Custom Provider
Endpoint ID: 9route
API Base URL: http://模型服务IP:端口/v1
Endpoint compatibility: OpenAI-compatible
API type: openai-completions
Model ID: text
Model alias: 9route-text(可选)
首次部署时,Hooks 可以选择 Skip for now。选择 Hatch in Terminal 后发送一条测试消息,确认模型可以正常响应,再使用 /exit 退出。
5. 启动并检查
bash
sudo docker compose up -d openclaw-gateway
sudo docker compose ps
正常状态应显示:
text
Up (...) (healthy)
健康检查:
bash
curl http://127.0.0.1:18789/healthz
6. Windows 11 本地端口映射
OpenClaw 控制面板需要 HTTPS 或浏览器的 localhost 安全上下文。家庭可信局域网中,可以让 Windows 将本机端口转发到 NAS。
以管理员身份打开 PowerShell:
powershell
Set-Service iphlpsvc -StartupType Automatic
Start-Service iphlpsvc
netsh interface portproxy add v4tov4 `
listenaddress=127.0.0.1 `
listenport=18789 `
connectaddress=NAS局域网IP `
connectport=18789
查看并测试:
powershell
netsh interface portproxy show all
Test-NetConnection 127.0.0.1 -Port 18789
浏览器打开:
text
http://127.0.0.1:18789
仪表盘连接参数:
text
WebSocket URL: ws://127.0.0.1:18789
网关令牌: .env 中的实际 OPENCLAW_GATEWAY_TOKEN
密码: 留空
不再需要映射时删除:
powershell
netsh interface portproxy delete v4tov4 `
listenaddress=127.0.0.1 `
listenport=18789
7. 安全建议
- 不要把 NAS 的
18789端口映射到公网。 - Windows 端口映射只解决浏览器安全上下文,电脑到 NAS 之间仍是普通 HTTP,仅适合可信局域网。
- 远程访问建议使用 SSH 隧道、Tailscale Serve 或带有效证书的 HTTPS 反向代理。
- 定期备份
/volume1/docker/openclaw/data、工作区和认证密钥目录。 - 稳定运行后建议固定 OpenClaw 镜像版本,不长期追踪
latest。