收起左侧

飞牛NAS部署OpenClaw:即时通讯Bot集成与安全加固完整实录

5
回复
284
查看
[ 复制链接 ]

12

主题

31

回帖

0

牛值

初出茅庐

💭 引言:为什么选择系统级部署而非Docker

在做好上述安全隔离的前提下,我们在飞牛 NAS 上采用 npm i -g openclaw 系统级安装,不要使用 sudo安装,在用户级别下安装就行,原因如下:

对比项 系统级部署 ✅ Docker ❌
调试友好性 直接编辑配置文件,无需进容器 需挂载卷、处理权限映射
网络连通性 直连主机网络,Telegram API 通信稳定 容器 NAT 可能导致 Webhook 失败
权限控制 明确指定运行用户,配合 allowlist 更安全 用户/组映射复杂,易出错
长期运维 原生 systemd 托管,日志清晰 依赖 Docker Compose,多一层抽象

⚠️ 重要提醒:OpenClaw 具备读取文件和执行系统命令的能力,不建议在主力 NAS 或存有重要数据的设备上直接部署。如果你的飞牛 NAS 主要用于家庭影音、文档存储等日常用途,请务必:

  • 启用 allowlist 限制可访问目录
  • 避免将敏感文件放在 Agent 可见路径
  • 优先在测试环境或次要设备上试用

🔒 核心原则
不是“必须用专用设备”,而是“在现有设备上做好最小权限隔离”。
系统级部署 + 配置防护 = 轻量、可控、可维护。 ⚠️ Docker常见坑:代理配置繁琐、时区漂移、依赖版本锁死、日志收集困难

📖 前言:什么是OpenClaw?

OpenClaw是一个强大的AI助手框架,可以:

  • ✅ 部署在NAS等Linux设备上
  • ✅ 通过Telegram、WhatsApp等聊天平台与AI对话
  • ✅ 执行文件操作、自动化任务
  • ✅ 集成各种AI模型(如DeepSeek、GPT等)
  • ✅ 支持自定义技能和插件
  • ✅ 提供Web Dashboard管理界面

一、📦 OpenClaw系统级安装

1.1 检查系统信息

# 查看系统版本
cat /etc/os-release

# 查看内核版本
uname -a

# 查看CPU架构(很重要!)
uname -m

预期输出示例:

uname -m 输出说明:
- x86_64  → 64位Intel/AMD处理器(大多数飞牛NAS)
- aarch64 → ARM64处理器(部分NAS型号)
- armv7l  → ARM 32位处理器

1.2 检查是否已安装Node.js

# 检查Node.js版本
node -v

# 检查npm版本
npm -v

我这边之前提前安装了,如果没有安装或版本过低,继续下面的步骤。

1.3 安装必要的工具

# 更新软件包列表(如果是Debian/Ubuntu系统)
apt update

# 安装curl和wget(如果还没有)
apt install -y curl wget git

# 安装构建工具(某些npm包需要)
apt install -y build-essential python3

📦1.4 安装Node.js

OpenClaw 至少需要 Node.js 22 或更高版本。

用NodeSource官方源(推荐)

# 下载NodeSource安装脚本
# 根据你的系统选择:
# - Debian 11/12 使用 setup_22.x
# - Ubuntu 20.04/22.04/24.04 使用 setup_22.x

curl -fsSL https://deb.nodesource.com/setup_22.x | bash -

# 安装Node.js
apt install -y nodejs

# 验证安装
node -v  # 应显示类似 v22.x.x
npm -v   # 应显示类似 10.x.x

二、📦 OpenClaw安装

# 安装
npm i -g openclaw

  • 这里一直在转圈圈耐心等待,可以通过监测网络传输数据。

  • 此时系统报错,原因是:

你现在用的是普通用户 Jaben(普通用户), 但 npm i -g 默认要往 /usr/local/lib 写, 👉 权限被系统正确地拦下来了(EACCES)。

  • 解决办法:

① 给 npm 配一个「用户级全局目录」

mkdir -p ~/.local/npm-global
npm config set prefix '~/.local/npm-global'

② 把它加入 PATH(只对你生效)

echo 'export PATH="$HOME/.local/npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

又报错误了: ✅ Node 是用 nvm 管的(v24.13.0)

❌ npm 的 prefix 被你手动改成了 ~/.local/npm-global

⚠️ nvm 不喜欢这样,会导致:

切 Node 版本后全局包“消失”

PATH 混乱

将来排错非常痛苦

👉 所以我们要“回到 nvm 推荐姿势”

✅ 正确解决方案(推荐,也最干净)

✔ 第一步:让 nvm 接管一切(照它说的来)

nvm use --delete-prefix v24.13.0 --silent

✔ 第二步:确认 prefix 已经没了

npm config get prefix

期望结果:说明状态完美 ✅

/home/Jaben/.nvm/versions/node/v24.13.0

重新用「nvm 风格」重新装 openclaw(继续等待转圈圈/(ㄒoㄒ)/~~)

npm i -g openclaw

出现这个信息🎉恭喜,这一步已经成功了,而且是“姿势完全正确”的那种成功。那些警告信息是openclaw的部分依赖比较老,但不影响使用,可以👉 可以完全忽略。

🧪 现在做 3 个“黄金确认”(很重要)

请依次执行:

1️⃣ 看 openclaw 在哪

which openclaw

2️⃣ 看版本(确认能跑)

openclaw --version

3️⃣ 确认用户身份

whoami
# Jaben

🎉🎉🎉恭喜,做到这一步,openclaw已经完美安装;

🚀 下一步开始准备启用openclaw。

三、🚀 初始化配置

openclaw onboard #初始化配置

到这个页面就开始初次运行配置了,下面就简单介绍下配置过程:

2.1 ⚠️ Security安全提示

风险项 防护建议
文件系统访问 启用 allowlist限制可访问目录
命令执行权限 配置沙箱环境
敏感信息泄露 密钥单独存放于 secrets.json

YES,回车选择 QuickStart

2.2 🤖 模型配置(以Z.AI为例)

选择Z.AI(GLM 4.7) → 输入API_KEY → 选择第一个默认模型

2.3 💬 即时通讯Bot核心配置 ⭐(以TG为例)

选择TG → 输入TG token

获取Token步骤:

  1. 搜索官方机器人创建平台(如@BotFather)
  2. 发送 /newbot 创建新机器人
  3. 命名机器人 → 获取 HTTP API格式的Token

2.4 跳过skill配置,截图保存红框配置文件路径,后续都可以打开文件进行配置。

终端会自动跳转“到要不要给 openclaw 打开 Bash 命令自动补全?” ✅ 选 Yes(推荐) openclaw 会:在你的 用户级 bash 配置 里加一小段补全脚本,只影响你这个用户 ,以后用起来更爽,没任何副作用。

2.5 本地电脑打开OpenClaw Dashboard UI界面

下面就是打开UI地址:(复制保存)

🎉 Dashboard URL:
http://127.0.0.1:18789/#token=xxxx

输入 openclaw gateway run启动OpenClaw

安全起见,先将终端环境启用代理:

export http_proxy=http://192.168.31.197:7890 && export https_proxy=http://192.168.31.197:7890 && export all_proxy=socks5://192.168.31.197

2.6 💬 即时通讯Bot核心配置跟OpenClaw配对 ⭐(最后一步了)

从运行状态可以看出OpenClaw在等待BOT配对中

  • 回到你的TG机器人聊天输入 /start,机器人会弹出你的配对码

  • 回到终端输入配对码
/home/Jaben/.local/npm-global/bin/openclaw pairing approve telegram 你的配对码

这样你的BOT就跟OpenClaw配对成功了。

2.7 💬 Bot控制OpenClaw演示效果

任务演示

任务演示2

三、♻️ 长期运行(systemd守护)(可选)

终端一关,OpenClaw就关掉了,想要保持OpenClaw长期后台运行可以按照下面操作

3.1 创建服务

sudo vi /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw Gateway 🤖
After=network.target

[Service]
Type=simple
User=root
Environment="TELEGRAM_BOT_TOKEN=你的Token"
ExecStart=/usr/local/bin/openclaw gateway run
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

3.2 启动并自启

sudo systemctl daemon-reload
sudo systemctl enable --now openclaw
sudo systemctl status openclaw  # 查看状态 ✅

四、📋 完整命令速查表

# ===== 安装阶段 =====
npm i -g openclaw
export PATH=/usr/local/bin:$PATH && source ~/.bashrc

# ===== 配置阶段 =====
openclaw onboard                              # 交互式初始化
export TELEGRAM_BOT_TOKEN="xxx"               # Bot 配置(示例)

# ===== 配对阶段 ⭐关键 =====
openclaw gateway run &                        # 后台启动网关
# 在 IM 应用给 Bot 发送消息,获取回复的配对码后:
openclaw pairing list                         # 查看待批准请求
openclaw pairing approve telegram <code>      # 批准配对 ✅

# ===== 运行阶段 =====
openclaw dashboard                            # 启动面板
sudo systemctl start openclaw                 # 后台服务(如已配置)

# ===== 维护命令 =====
openclaw pairing revoke telegram <user_id>    # 撤销配对权限
sudo journalctl -u openclaw -f                # 实时查看日志
nano ~/.openclaw/config.json                  # 修改配置文件


五、🏗️ 架构示意图

**─────────────────**     **─────────────**     **─────────────────**
**  👤 用户终端    **────→**  消息平台   **←────**   Bot API服务   **
**  (手机/电脑)    **     **   (IM应用)   **     **  (下发配对码)    **
**─────────────────**     **──────**──────**     **─────────────────**
                               **
                               ↓ 发送配对码
                     **─────────────────**
                     ** 🖥️ 飞牛NAS       **
                     ** **─────────────** **
                     ** **OpenClaw     ** **◄── 接收配对请求
                     ** **Gateway      ** **
                     ** **:18789       ** **◄── systemd托管
                     ** **(127.0.0.1)  ** **
                     ** **──────**──────** **
                     **        ↑         **
                     **   [执行approve]  **
                     **   SSH隧道入口    **
                     **   (22端口)       **
                     **────────**─────────**
                              **
                     ═════════╧═════════  局域网/互联网
                              **
                         **────**────**
                         ** 💻 电脑  **
                         ** localhost**
                         ** :18789   **◄── 浏览器访问Dashboard
                         **─────────**

配对流程图示:

六、🔒 SSH Key登录与安全加固

6.1 🔑 生成SSH密钥对

ssh-keygen -t ed25519 -C "openclaw-nas" -f ~/.ssh/openclaw_nas

6.2 📤 上传公钥到NAS

ssh-copy-id -i ~/.ssh/openclaw_nas.pub Jaben@192.168.31.197

效果: 免密码登录 + 防暴力破解 ✅

6.3 🛡️ OpenClaw应用层安全配置(关键!)

💡 核心原则:最小权限 + 目录隔离

(1) 启用 allowlist 限制文件访问范围

编辑配置文件:

nano ~/.openclaw/config.json

添加或修改以下字段(注意:标准JSON,无注释):

{
  "fileSystem": {
    "allowlist": [
      "/home/Jaben/openclaw_workspace",
      "/mnt/user/AI_Tools"
    ]
  }
}

最佳实践

  • 创建专用工作目录(如 ~/openclaw_workspace
  • 所有Agent操作文件放在此目录内
  • 不要allowlist 设为 //home

(2) 避免敏感文件暴露

  • 不要allowlist 目录中存放: * SSH私钥(~/.ssh/id_*
    • 数据库文件、财务文档
    • NAS系统配置文件
  • 建议:在飞牛NAS的共享文件夹中新建 AI_Workspace 专用目录,并仅对此目录授权

(3) 运行用户降权(可选但推荐)

如果不需要系统级操作,可在 systemd 服务中指定普通用户:

[Service]
User=Jaben  # 而非 root
Group=users

6.4 🌐 网络与系统层加固

层级 措施 操作
SSH层 禁root登录 PermitRootLogin no
网络层 Fail2Ban apt install fail2ban
应用层 Token保护 secrets.json,设600权限
传输层 防火墙限制 ufw allow from 192.168.31.0/24
物理层 VPN访问 公网场景强制WireGuard/OpenVPN

七、✅ 总结

阶段 关键成果
1️⃣ 安装 系统级npm部署,选择更轻量的方案
2️⃣ 配置 模型+消息平台双通道就绪
2.5 🔗 配对 Bot下发配对码 → NAS执行approve
3️⃣ 访问 本地端口映射安全穿透内网
4️⃣ 运维 systemd保活,日志可追踪
5️⃣ 安全 allowlist目录隔离 + 分层加固

如有修改将更新在文章底部留言,觉得有用可以点赞+转发+推荐,点点关注,你的支持是我更新的最大动力❤。
收藏
送赞
分享

0

主题

1

回帖

0

牛值

江湖小虾

一楼,晚上回家试一试
可以关注我微信公众号"纳斯派",那里回复会比较及时  详情 回复
昨天 23:30
我会再出一期常用命令文档,有问题可以及时排查 ,我也是踩了坑过来的,现在好多了  详情 回复
昨天 23:29

0

主题

1

回帖

0

牛值

江湖小虾

今晚就去试试

我会再出一期常用命令文档,有问题可以及时排查 ,我也是踩了坑过来的,现在好多了,可以关注我微信公众号"纳斯派",那里回复会比较及时  详情 回复
昨天 23:29

12

主题

31

回帖

0

牛值

初出茅庐

昨天 23:29 楼主 显示全部楼层
A-W 发表于 2026-2-10 16:26
一楼,晚上回家试一试

我会再出一期常用命令文档,有问题可以及时排查 ,我也是踩了坑过来的,现在好多了

12

主题

31

回帖

0

牛值

初出茅庐

昨天 23:29 楼主 显示全部楼层

我会再出一期常用命令文档,有问题可以及时排查 ,我也是踩了坑过来的,现在好多了,可以关注我微信公众号"纳斯派",那里回复会比较及时

12

主题

31

回帖

0

牛值

初出茅庐

昨天 23:30 楼主 显示全部楼层
A-W 发表于 2026-2-10 16:26
一楼,晚上回家试一试

可以关注我微信公众号"纳斯派",那里回复会比较及时
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则