Hermes Agent(NousResearch/hermes-agent)专为每月约 5 美元的 VPS设计,而非只能跑在笔记本上。官方 Docker 镜像 nousresearch/hermes-agent 将所有状态写入宿主机挂载的 ~/.hermes:/opt/data 目录,gateway 进程在后台统一接入 Telegram、Discord、Slack 等平台。本文按步骤讲解在廉价 VPS 上安装 Docker、创建 Telegram 机器人、配置白名单安全策略,以及用 docker compose 持久运行。官方文档:Docker 用户指南、消息网关、团队 Telegram 助手教程。
若你在 Apple 硬件上对比不同 Agent 框架,可阅读Hermes Agent 与 OpenClaw 在 macOS 与 Mac mini M4 上的对比。Telegram 长对话导致上下文膨胀后,可用Mac mini M4 上的 Hermes trajectory_compressor 记忆与 Token 调优。上述文章侧重本地预演;本页聚焦 Linux VPS + Docker 实现 Telegram 7×24 在线。
披露:MacHTML 提供可选的云 Mac mini 租用用于配置预演;本指南以 Linux VPS 与 Docker 为主,不强制使用 Mac。
为何在廉价 VPS 上用 Docker
Hermes 需要在你休息时仍持续在线的进程。笔记本合盖即断线;廉价 VPS(常见 1–2 vCPU、2–4 GB 内存、每月约 4–6 美元)可全天候运行 gateway run,不占用个人电脑。
对需要频繁部署的运维者,Docker 带来三项实际收益。其一,可复现安装:拉取 nousresearch/hermes-agent:latest,无需在每个新 VPS 上调试 Python 3.11、Node 与各发行版依赖。其二,隔离升级:更换容器镜像时保留宿主机 ~/.hermes,会话、记忆与 API 密钥不丢失。其三,可选 命令沙箱:设置 TERMINAL_BACKEND=docker,让 Agent 的 shell 工具在独立沙箱容器内执行,而非直接落在宿主机内核上。
Telegram 是验证整条链路最快的渠道。用 @BotFather 创建机器人,将 token 写入 ~/.hermes/.env,把你的数字用户 ID 加入 TELEGRAM_ALLOWED_USERS,数秒内即可发消息测试。网关默认策略拒绝未知用户;对具备终端能力的机器人切勿启用 GATEWAY_ALLOW_ALL_USERS=true。
VPS 还提供稳定公网 IP 与可预期的在线时间,适合 cron 任务。Hermes 在 gateway 内每 60 秒 触发 cron;宿主机重启后,Compose 的 restart: unless-stopped 可自动恢复 gateway,无需人工介入。
与家庭 NAS 或树莓派相比,小型云 VM 通常对 Telegram API 与 LLM 提供商的出站连接更稳定,且云厂商快照便于灾备。务必 bind-mount ~/.hermes,在大版本升级前对该目录做快照。
若从中国大陆运维,请选择对 Telegram 与 LLM 端点出站稳定的区域,或规划代理路径。官方镜像从 Docker Hub 拉取;国内镜像加速可缓解慢链路,但镜像同步后应核对 digest。
Docker Compose 也便于团队协作:固定一份 compose 文件、一个数据目录与一套 pairing 流程,队友可在预发 VPS 上复现生产环境,再推广配置变更。
对只需 Telegram 私聊、不接 Dashboard 的个人用户,Minimum 规格往往足够;一旦启用 terminal.backend: docker 或多人管理,应升级到 Recommended 并监控内存峰值,避免 sandbox 容器与 gateway 争抢 RAM。
架构:容器内的 gateway
Internet → Telegram API → VPS:hermes container (gateway run)
↳ /opt/data (bind-mount ~/.hermes)
├─ .env (TELEGRAM_BOT_TOKEN, API keys)
├─ config.yaml (terminal, models, cron)
├─ sessions/ (per-chat history)
└─ memories/ (curated long-term memory)
gateway 是单一长驻进程,多路复用各消息平台。每个 Telegram 会话经 /opt/data/sessions/ 持久化,任务进入 Agent 循环,精选长期记忆写入 /opt/data/memories/。因 bind-mount ~/.hermes:/opt/data,上述状态均在宿主机上。
切勿将同一 /opt/data 挂载进两个 gateway 容器。会话文件不支持并发写入;双 gateway 共用数据目录会导致损坏与重复处理消息。生产模式是一个名为 hermes 的服务,command: gateway run。
端口 8642 可选暴露 OpenAI 兼容 API 与健康检查端点。若仅使用 Telegram 可不发布该端口。启用时需设 API_SERVER_ENABLED=true,谨慎绑定地址,并以强 API_SERVER_KEY 与防火墙规则保护。
VPS 规格与成本
Telegram 流量稳定后,gateway 内存通常是首要瓶颈。Agent 容器持有模型上下文;启用 terminal.backend: docker 时沙箱容器会额外占用资源。磁盘随会话历史、技能包与记忆文件增长——cron 任务累积日志前请预留空间。
下表列出四种常见配置。Recommended 适合需要 shell 工具或多管理员;Budget lab 仅用于短时 pairing 验证,上线前务必升配。
| 配置 | vCPU | 内存 | 磁盘 | 月费参考 | 适用场景 |
|---|---|---|---|---|---|
| 最低 | 1 | 2 GB | 20 GB | 约 $4–5 | 仅 Telegram 网关,无 Dashboard,单用户 |
| 推荐 | 2 | 4 GB | 40 GB | 约 $6–8 | Gateway + TERMINAL_BACKEND=docker 沙箱 shell 工具 |
| 高配 | 2+ | 8 GB | 60 GB | 约 $12+ | Dashboard、cron、大型 skills 树、多管理员 |
| 预算实验 | 1 | 1 GB | 15 GB | 约 $3–4 | 仅冒烟测试与 pairing 验证,非生产 |
分步操作手册
- 在 VPS 上安装 Docker — Ubuntu 22.04 及以上执行 apt 安装 docker.io 与 docker-compose-v2,将用户加入 docker 组以便无需 sudo 运行 compose。
sudo apt update && sudo apt install -y docker.io docker-compose-v2 sudo usermod -aG docker $USER newgrp docker - 创建持久化数据目录 — 所有密钥、会话与配置位于宿主机 ~/.hermes;升级镜像前请备份该目录。
mkdir -p ~/.hermes - 运行一次性交互 setup — 拉取 nousresearch/hermes-agent 并挂载 ~/.hermes:/opt/data,让向导写入 .env 与 config.yaml。
docker run -it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent setup - 创建 Telegram 机器人与白名单 — 用 @BotFather 获取 bot token,@userinfobot 查数字用户 ID。网关默认拒绝未知用户——具备终端权限时切勿设 GATEWAY_ALLOW_ALL_USERS=true。
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz TELEGRAM_ALLOWED_USERS=987654321 - 批准 DM pairing 码(可选) — 若未预填白名单,未知用户会收到一小时有效的 pairing 码;在宿主机用 pairing approve 批准。
docker run --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent pairing approve telegram XKGH5N7P - 前台 smoke-test gateway run — 交互式启动 gateway run,向机器人发送 /help,确认 /model、/compress 等命令后再上生产。
docker run --rm -it -v ~/.hermes:/opt/data nousresearch/hermes-agent gateway run - 用 Docker Compose 部署(生产) — 使用 restart: unless-stopped,bind-mount ~/.hermes:/opt/data,并限制内存/CPU,防止失控 Agent 拖垮 VPS。
services: hermes: image: nousresearch/hermes-agent:latest container_name: hermes restart: unless-stopped command: gateway run volumes: - ~/.hermes:/opt/data deploy: resources: limits: memory: 4G cpus: "2.0"docker compose up -d docker logs -f hermes - 加固团队机器人的终端访问 — 在 config.yaml 设置 terminal.backend: docker,让 shell 工具在沙箱容器内运行而非宿主机内核。
# ~/.hermes/config.yaml excerpt terminal: backend: docker container_cpu: 1 container_memory: 5120 container_persistent: true
故障排查
机器人无回复,日志出现 Telegram 401
在 @BotFather 重新生成 token,更新 ~/.hermes/.env 中的 TELEGRAM_BOT_TOKEN,再执行 docker compose restart hermes。改名或撤销 token 后未更新是最常见的静默失败原因。
未授权消息或 endless pairing 提示
将个人数字 ID(非 bot ID)加入 TELEGRAM_ALLOWED_USERS,或运行 pairing approve telegram <code>。确认仅一个 gateway 容器挂载 ~/.hermes;重复 gateway 会竞争会话文件并误拒合法用户。
需要限定仓库读取、npm test 与受控自动修复?阅读 2026 Hermes Agent MCP 对接 Claude Opus 4.8:合规本地代码演练场。
常见问题
能否在 Mac mini 而非 VPS 上跑 Hermes Docker?
可以——相同的 docker run 与 compose 模式适用于 Docker Desktop 或 Colima。纯 Telegram 7×24 场景 VPS 通常更便宜;需要本地 Apple 工具链或 Xcode 相关技能时 Mac mini M4 更合适。MacHTML 云 Mac 预演为可选项,非本 VPS 指南必需。
必须暴露 8642 端口吗?
仅 Telegram 聊天时不需要。仅在需要 OpenAI 兼容 API 或外部健康检查时启用 8642,并设置 API_SERVER_ENABLED=true、API_SERVER_HOST=0.0.0.0、足够强度的 API_SERVER_KEY 及防火墙规则。
与站内 OpenClaw Telegram 指南有何不同?
OpenClaw 文章面向云 Mac 上的 Node.js gateway 安装。Hermes 使用 hermes gateway 与原生 Telegram 适配器,文档以 Nous Research 的 Docker 方案为主。
应优先测试哪些斜杠命令?
首次成功回复后发送 /status、/model、/compress、/new。管理员可执行受控命令;普通用户受 gateway 白名单限制。