视频教程:
最近我准备把一台 NanoPi R5S 小主机利用起来,让它长期运行一个 AI Agent。目标是:
让 R5S 作为一台低功耗常驻设备,部署 Hermes Agent,并通过 OpenAI Codex CLI 接入我的 ChatGPT Plus 账号里的 Codex 模型能力。
这样后续我就可以让它在局域网里长期帮我执行一些自动化任务,比如代码处理、文件整理、脚本执行、Agent 工作流等。
这篇文章会从最基础的系统安装开始写起,包括:
Rufus 烧录 Debian 12 / Armbian
R5S 首次启动
SSH 登录
安装基础环境
安装 Codex CLI
登录 ChatGPT Plus
安装 Hermes Agent
配置 Hermes 使用 Codex
设置 systemd 常驻运行
一、先说结论:R5S 不能直接烧普通 Debian ISO
很多人一开始会去 Debian 官网下载 Debian 12 ISO,然后用 Rufus 烧录。
但这里有一个关键点:
NanoPi R5S 是 ARM64 架构设备,不是普通 x86 电脑。
所以它不能直接使用普通 PC 版 Debian ISO,而应该使用适配 R5S 的 ARM 镜像。
比较推荐使用:
Armbian for NanoPi R5S
Debian 12 Bookworm
Minimal / IOT 镜像
也就是说,我们实际安装的是基于 Debian 12 Bookworm 的 Armbian 系统。
这样兼容性会更好,也更适合作为小主机长期运行。
二、准备材料
你需要准备:
1. NanoPi R5S
2. 一张 8G 以上 TF 卡,建议 16G 或 32G
3. TF 卡读卡器
4. Windows 电脑
5. Rufus 烧录工具
6. 网线
7. USB-C 电源
8. 一个可以正常访问 ChatGPT / OpenAI 的网络环境
建议你一开始先用 TF 卡启动系统。
不要一上来就写入 eMMC。
因为 TF 卡方案更安全,出问题直接重刷就行。等系统、Hermes、Codex 都跑通之后,再考虑是否写入 eMMC。
三、下载 R5S 可用的 Debian 12 镜像
推荐下载 Armbian 的 NanoPi R5S 镜像。
你要找的版本大概是:
NanoPi R5S
Debian 12 Bookworm
Minimal / IOT
.img.xz
下载后文件名可能类似:
Armbian_xxx_Nanopi-r5s_bookworm_current_xxx_minimal.img.xz
注意,不要下载普通的:
debian-12.x.x-amd64-netinst.iso
这种是给普通 PC / 服务器用的,不适合 R5S。
四、用 Rufus 烧录系统到 TF 卡
1. 插入 TF 卡
把 TF 卡插入读卡器,再插到 Windows 电脑上。
2. 打开 Rufus
Rufus 里这样选择:
设备:选择你的 TF 卡
引导类型:选择下载好的 Armbian 镜像
分区类型:保持默认
文件系统:保持默认
如果 Rufus 无法直接识别 .xz 文件,可以先用 7-Zip 解压,得到:
xxx.img
然后在 Rufus 里选择这个 .img 文件。
3. 使用 DD 模式写入
如果 Rufus 弹出提示,让你选择写入模式,建议选择:
DD 镜像模式
然后点击开始写入。
写入完成后,Windows 可能会提示磁盘无法识别,或者让你格式化。
不要格式化。
这是因为 Linux 分区在 Windows 里无法正常识别,属于正常现象。
五、R5S 首次启动
烧录完成后:
1. 取出 TF 卡
2. 插入 R5S
3. 接上网线
4. 接上 USB-C 电源
5. 等待 1-3 分钟
建议第一次启动时,把 R5S 接到主路由的 LAN 口。
这样它会自动通过 DHCP 获取一个局域网 IP。
六、找到 R5S 的 IP 地址
进入你的主路由后台,找到 DHCP 设备列表。
设备名可能显示为:
nanopi
armbian
debian
rockchip
假设你看到它的 IP 是:
192.168.31.88
后面就可以通过 SSH 登录。
七、SSH 登录 R5S
在 Windows 上打开 PowerShell,输入:
ssh [email protected]
如果 root 不能登录,就根据 Armbian 首次启动提示创建的用户名登录:
ssh 用户名@192.168.31.88
登录后,先检查系统信息:
uname -a
cat /etc/os-release
df -h
ip a
如果看到类似:
Debian GNU/Linux 12
Bookworm
Armbian
说明系统正常。
八、更新系统并安装基础工具
进入系统后,先更新:
sudo apt update
sudo apt upgrade -y
然后安装常用工具:
sudo apt install -y \
curl wget git vim nano htop tmux unzip xz-utils \
ca-certificates gnupg lsb-release build-essential \
python3 python3-pip python3-venv \
jq net-tools dnsutils
设置时区:
sudo timedatectl set-timezone Asia/Shanghai
查看时间:
date
timedatectl
九、给 R5S 设置固定 IP
建议最简单的方式是:
在主路由后台给 R5S 做 DHCP 静态绑定。
比如固定为:
192.168.31.88
这样以后重启 R5S,也不会找不到 IP。
不建议一开始就在 Debian 系统里手动改网络配置,因为不同 Armbian 镜像可能使用不同的网络管理方式,比如 NetworkManager 或 systemd-networkd。
你可以用下面命令查看:
systemctl status NetworkManager
systemctl status systemd-networkd
如果 NetworkManager 是 active,可以查看连接:
nmcli device
nmcli connection show
十、安装 Node.js
Codex CLI 是通过 npm 安装的,所以需要先安装 Node.js。
建议安装 Node.js 22:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
检查版本:
node -v
npm -v
如果能看到类似:
v22.x.x
说明安装成功。
十一、安装 OpenAI Codex CLI
安装 Codex CLI:
sudo npm i -g @openai/codex
检查是否安装成功:
codex --version
which codex
如果能正常显示版本号,就说明 Codex CLI 已经安装好了。
十二、登录 ChatGPT Plus 账号
执行:
codex
第一次运行时,它会让你选择登录方式。
如果你希望使用 ChatGPT Plus 订阅里的 Codex 能力,就选择:
Sign in with ChatGPT
不要选 API Key。
这里要注意:
ChatGPT Plus 订阅和 OpenAI API Key 是两套体系。
如果你用 API Key,本质上走的是 API 计费。
如果你要用 Plus 账号里的 Codex 能力,就应该走 ChatGPT 登录。
登录完成后,可以创建一个测试目录:
mkdir -p ~/codex-test
cd ~/codex-test
git init
codex
然后输入:
帮我创建一个 hello.py,运行后输出 hello from r5s
如果 Codex 能创建文件、修改文件、执行任务,就说明 Codex CLI 已经正常工作。
退出 Codex:
/quit
十三、安装 Hermes Agent
执行官方安装脚本:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
安装完成后刷新环境变量:
source ~/.bashrc
检查 Hermes 是否安装成功:
hermes --version
which hermes
如果提示找不到命令,可以检查:
ls ~/.local/bin
必要时把路径加入环境变量:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
十四、配置 Hermes 使用 Codex
建议不要一上来就配置 gateway、Telegram Bot、自动任务。
先让最基础的 Hermes 对话跑通。
执行:
hermes model
如果看到 provider 选择,选择类似:
openai-codex
模型可以先填:
gpt-5.4
这里不要自己随便改成:
gpt-5-4
gpt-5.4-thinking
gpt-5-codex
模型名一定要以 Hermes 当前支持和 Codex CLI 实际可用为准。
配置完成后测试:
hermes chat
输入:
你好,简单介绍一下你现在运行在哪里
如果 Hermes 能回复,说明:
Hermes Agent
↓
OpenAI Codex CLI
↓
ChatGPT Plus / Codex
这条链路已经打通。
十五、如果 Hermes 没有识别 Codex 登录
先确认 Codex 自己能不能用:
codex
如果 Codex 自己都不能用,那问题在 Codex 登录或网络。
如果 Codex 能用,但 Hermes 不能用,检查 Codex 登录文件:
ls -la ~/.codex
ls -la ~/.codex/auth.json
然后重新配置 Hermes:
hermes model
或者尝试:
hermes auth add openai-codex
最稳的顺序是:
第一步:先让 codex CLI 登录成功
第二步:确认 codex CLI 可以正常执行任务
第三步:再配置 hermes model
第四步:测试 hermes chat
第五步:最后再配置 gateway / 自动化
十六、创建 Hermes 工作目录
不要让 Agent 在系统根目录乱跑。
建议单独创建一个工作区:
mkdir -p ~/agents/hermes-workspace
cd ~/agents/hermes-workspace
git init
以后让 Hermes 或 Codex 执行任务,尽量都限制在这个目录。
比如:
cd ~/agents/hermes-workspace
hermes chat
或者:
cd ~/agents/hermes-workspace
codex
这样即使 Agent 修改文件,也只会在这个工作区里操作,风险更可控。
十七、配置 Hermes Gateway
如果你只是 SSH 登录后手动使用:
hermes chat
就已经够了。
如果你想让 Hermes 长期运行,并接入 Telegram Bot、Discord、Slack 或其他接口,可以继续配置 gateway。
执行:
hermes gateway setup
根据提示完成配置。
测试启动:
hermes gateway
如果能正常运行,再考虑做 systemd 常驻。
十八、用 systemd 让 Hermes 常驻运行
创建 systemd 服务文件:
sudo nano /etc/systemd/system/hermes-gateway.service
写入下面内容。
注意,把 YOUR_USER 改成你的真实用户名:
[Unit]
Description=Hermes Agent Gateway
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=YOUR_USER
WorkingDirectory=/home/YOUR_USER/agents/hermes-workspace
Environment=PATH=/home/YOUR_USER/.local/bin:/usr/local/bin:/usr/bin:/bin
ExecStart=/home/YOUR_USER/.local/bin/hermes gateway
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
如果不知道 Hermes 的实际路径,先查:
which hermes
然后把 ExecStart 改成实际路径。
保存后执行:
sudo systemctl daemon-reload
sudo systemctl enable hermes-gateway
sudo systemctl start hermes-gateway
查看运行状态:
sudo systemctl status hermes-gateway
查看日志:
journalctl -u hermes-gateway -f
十九、网络代理配置
R5S 要正常使用 Codex / Hermes,必须能稳定访问 ChatGPT / OpenAI。
先测试网络:
ping google.com
curl -I https://chatgpt.com
curl -I https://api.openai.com
如果 R5S 默认网关不能访问 OpenAI,而你的旁路由可以访问,可以临时改默认网关。
假设:
主路由:192.168.31.1
旁路由:192.168.31.160
R5S:192.168.31.88
临时修改默认网关:
sudo ip route replace default via 192.168.31.160
查看路由:
ip route
也可以配置代理环境变量:
export HTTP_PROXY=http://192.168.31.160:7890
export HTTPS_PROXY=http://192.168.31.160:7890
测试:
curl -I https://chatgpt.com
如果要让 systemd 里的 Hermes Gateway 也走代理,可以编辑服务文件:
sudo nano /etc/systemd/system/hermes-gateway.service
在 [Service] 里加:
Environment=HTTP_PROXY=http://192.168.31.160:7890
Environment=HTTPS_PROXY=http://192.168.31.160:7890
Environment=NO_PROXY=localhost,127.0.0.1,192.168.0.0/16
然后重载:
sudo systemctl daemon-reload
sudo systemctl restart hermes-gateway
二十、R5S 性能优化建议
R5S 跑 Hermes / Codex 是够用的。
因为真正的大模型推理在 OpenAI 远端,本地主要负责:
运行 CLI
处理文件
执行 shell 命令
维护 gateway
保存配置
调用外部服务
但它毕竟是小主机,不建议同时跑太多服务。
可以安装 htop 查看资源:
sudo apt install -y htop
htop
如果内存紧张,可以加 2G swap:
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
查看内存:
free -h
二十一、安全建议
Agent 类工具有一定风险,因为它可能执行命令、读写文件、调用网络服务。
所以一定要注意安全。
1. 不要把 Hermes Gateway 暴露到公网
不要直接做端口转发。
尤其不要暴露:
SSH 22
Hermes Gateway
OpenClaw Gateway
Agent Web UI
如果要远程访问,建议用:
Tailscale
ZeroTier
WireGuard
Cloudflare Tunnel + 访问认证
2. 尽量不要用 root 用户跑 Agent
建议新建普通用户运行 Hermes。
Agent 的工作目录也限制在:
~/agents/hermes-workspace
不要让它直接操作系统根目录。
3. 不要轻易开启高危模式
如果 Codex 或其他 Agent 提供类似:
--dangerously-bypass-approvals-and-sandbox
或者:
--yolo
这类参数,普通情况下不要使用。
这种模式会绕过确认和沙箱,适合隔离测试环境,不适合长期运行的小主机。
二十二、推荐最终架构
最终可以整理成这样:
NanoPi R5S
└── Armbian / Debian 12 Bookworm
├── SSH 远程管理
├── Node.js 22
├── OpenAI Codex CLI
│ └── 使用 ChatGPT Plus 登录
├── Hermes Agent
│ └── provider: openai-codex
├── ~/agents/hermes-workspace
│ └── Agent 工作目录
└── systemd
└── hermes-gateway.service 常驻运行
这个结构比较干净。
R5S 负责长期在线,Hermes 负责 Agent 调度,Codex 负责具体代码和命令执行能力,ChatGPT Plus 账号负责模型能力。
二十三、常见问题排查
1. R5S 烧完卡不启动
优先检查:
是不是下载了 R5S 专用镜像
是不是误用了普通 Debian ISO
TF 卡是否写入成功
电源是否稳定
网线是否接好
是否从 eMMC 优先启动了旧系统
如果 eMMC 里已经有系统,有时可能会优先从 eMMC 启动。
可以尝试按住 MASK 键再上电,让它从 TF 卡启动。
2. SSH 连不上
先去路由器后台查看 DHCP 设备列表。
如果找不到,可以:
换一个网口
换一根网线
重新上电
等待 2-3 分钟
用局域网扫描工具扫描
3. Codex 登录失败
先测试网络:
curl -I https://chatgpt.com
curl -I https://api.openai.com
如果访问失败,优先解决代理、网关、DNS 问题。
4. Hermes 找不到 openai-codex
尝试更新 Hermes:
hermes update
如果没有这个命令,就重新执行安装脚本:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc
然后重新配置:
hermes model
5. Codex 能用,但 Hermes 不能用
按这个顺序排查:
codex
确认 Codex 自己能用。
然后:
hermes model
hermes chat
如果还是不行,可能是 Hermes 对 Codex OAuth、模型名、provider 配置的兼容问题。
这时候不要先折腾 gateway,先保证最小链路:
codex CLI 可用
hermes model 配置完成
hermes chat 可回复
二十四、装好系统后的最简命令合集
系统刷好、SSH 登录后,可以按这个顺序执行:
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
curl wget git vim htop tmux unzip xz-utils \
ca-certificates gnupg lsb-release build-essential \
python3 python3-pip python3-venv jq net-tools dnsutils
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm i -g @openai/codex
codex
登录 ChatGPT Plus 成功后:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc
hermes model
hermes chat
创建 Agent 工作目录:
mkdir -p ~/agents/hermes-workspace
cd ~/agents/hermes-workspace
git init
如果要常驻:
hermes gateway setup
hermes gateway
确认运行没问题后,再配置 systemd。
总结
整体流程其实可以拆成三步:
第一步,先把 R5S 刷成一个稳定的 Debian 12 / Armbian 小主机。
第二步,安装 Codex CLI,并用 ChatGPT Plus 账号登录,确认 Codex 自己可以正常运行。
第三步,安装 Hermes Agent,让 Hermes 调用 openai-codex,然后再考虑 gateway 和常驻运行。
我个人建议不要一开始就追求一步到位。
最稳的顺序是:
TF 卡启动系统
↓
SSH 登录
↓
Codex CLI 跑通
↓
Hermes chat 跑通
↓
Gateway 跑通
↓
systemd 常驻
↓
考虑写入 eMMC
这样每一步都可以单独验证,出问题也容易定位。
对于 R5S 这种低功耗 ARM 小主机来说,它非常适合作为家庭网络里的 Agent 节点。
只要网络环境稳定、权限控制好,它就可以长期在线,帮你跑一些自动化、代码处理、文件整理和 AI 工作流任务。

