在VPS上自托管Hermes Agent
在自己的VPS上部署Nous Research的Hermes Agent。创建隔离用户,一条命令安装,选择LLM提供商,接入Telegram,作为systemd服务运行。
Hermes Agent是一个迭代非常快的项目。自2026年2月发布以来,Nous Research在七周内发布了九个版本。v0.9.0于4月13日发布,完全不同了:本地Web仪表盘用于在浏览器中管理设置和会话、16个消息平台(包括iMessage和微信)、原生Android/Termux支持、内置备份和导入命令、低延迟推理的快速模式以及可插拔的上下文引擎。这个项目在不到两个月内从“有趣的实验”变成了“生产级个人智能体”。
在笔记本电脑上运行适合快速实验。但一个合上盖子就休眠、只能从键盘访问、重启后丢失工作区的智能体长期来看并不实用。VPS解决了这三个问题:智能体7x24小时在线,你可以用手机通过16个平台中的任何一个与它交流,它的记忆和技能在会话间持久保存。
配置过程很简单。启动一台虚拟机,创建非root用户进行隔离,安装Hermes,选择模型和网关,然后用systemd服务封装整个流程。这就是全部步骤。
为什么现在要自托管?供应商锁定的教训
2026年4月4日,Anthropic切断了第三方AI智能体对Claude Pro和Max订阅的访问权限。在此之前,OpenClaw等工具允许你以固定月费运行繁重的智能体工作负载。一夜之间,这些用户收到了400错误和迁移通知。仅剩的选项:切换到按token计费的API(对重度用户来说可能贵10倍),购买企业级使用套餐,或迁移到Anthropic自己的Claude Code Channels——一个与OpenClaw直接竞争的官方产品,同月上线。
规律很明显。将你的工作流构建在单一供应商的平台上,一次策略变更就能摧毁一切。像Hermes这样的自托管智能体完全避开了这个陷阱。Hermes不绑定任何供应商:它开箱即支持15+推理后端,从OpenRouter到Nous Portal再到本地Ollama服务器。如果某个供应商更改条款或定价,你用一条命令替换它,继续工作。你的记忆、技能和会话留在你的服务器上,与背后使用哪个LLM无关。
什么是Hermes Agent,为什么要自托管?
Hermes Agent是由Nous Research开发的开源(MIT许可证)AI智能体。它连接LLM提供商,执行终端命令,浏览网页,并在会话间记住所学内容。它能从完成的任务中构建可复用的技能,支持16个消息网关:Telegram、Discord、Slack、WhatsApp、Signal、Matrix、iMessage、WeChat、WeCom、Email、SMS、DingTalk、飞书、Mattermost、Home Assistant和Webhooks。
自托管意味着你的提示词和数据留在你的服务器上。没有第三方智能体平台能看到你的对话。智能体持续运行,随时间积累上下文,成本仅为VPS托管费加上你实际使用的LLM API调用费。
Hermes Agent在VPS上运行需要什么?
一台安装了Git的Linux服务器。这是唯一的前提条件。安装程序会自动拉取Python 3.11+、Node.js v22、ripgrep和ffmpeg。硬件方面:2 GB内存和10 GB磁盘是最低配置。如果你计划运行多个网关会话或同时使用Web仪表盘,4 GB内存更好。
| 需求 | 最低配置 | 推荐配置 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 / Debian 12 | Ubuntu 24.04 |
| 内存 | 2 GB | 4 GB+ |
| 磁盘 | 10 GB可用空间 | 20 GB+ |
| CPU | 1 vCPU | 2+ vCPU |
前提条件
安装Hermes Agent之前,先设置一个非root用户和基本防火墙。如果你已经有一台安全配置好的VPS,可以直接跳到安装部分。
创建专用用户
以root身份SSH登录服务器,为Hermes创建用户:
adduser hermes --disabled-password --gecos ""
usermod -aG sudo hermes
为该用户配置免密码sudo(服务管理需要):
echo "hermes ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/hermes
chmod 440 /etc/sudoers.d/hermes
复制SSH密钥以便使用该用户登录:
mkdir -p /home/hermes/.ssh
cp ~/.ssh/authorized_keys /home/hermes/.ssh/
chown -R hermes:hermes /home/hermes/.ssh
chmod 700 /home/hermes/.ssh
chmod 600 /home/hermes/.ssh/authorized_keys
之后以hermes用户身份操作:
su - hermes
配置防火墙
安装UFW并仅允许SSH:
sudo apt-get install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw --force enable
检查当前规则:
sudo ufw status verbose
输出应显示SSH已允许,其他所有入站流量被拒绝。Hermes网关通过出站连接访问Telegram API,因此无需开放任何入站端口用于消息传递。
如何在Ubuntu上安装Hermes Agent?
一条命令。以hermes用户身份运行,不要用root。
一键安装
Virtua.Cloud维护了一个一键安装脚本,可以一步完成Hermes Agent的安装和systemd持久化配置:
curl -fsSL https://virtua.sh/i/hermes-ssh | bash
该脚本处理了以下章节中涵盖的所有内容:安装Hermes并创建systemd服务。完成后,直接跳到配置LLM提供商。
手动安装
如果你更喜欢逐步安装,下载上游安装脚本并在运行前查看:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh -o /tmp/hermes-install.sh
less /tmp/hermes-install.sh
该脚本通过uv安装Python 3.11+、Node.js v22、ripgrep、ffmpeg和hermes CLI。确认无误后:
bash /tmp/hermes-install.sh
重新加载shell以识别新的hermes命令:
source ~/.bashrc
检查已安装的版本:
hermes --version
预期输出:
Hermes Agent v0.9.0 (2026.4.13)
Project: /home/hermes/.hermes/hermes-agent
Python: 3.11.15
...
运行诊断工具检查缺失的依赖:
hermes doctor
查看绿色对勾标记。此阶段关于未配置API密钥的警告是正常的。如果Python或Git出现红色标记,需要在继续之前修复。
如何配置LLM提供商?
Hermes Agent不包含模型。你需要连接提供商API并按token付费。最快的配置方式是设置向导:
hermes setup
向导会引导你选择提供商、输入API密钥、启用工具并配置网关,全部在一个交互式会话中完成。如果你更喜欢逐项手动配置,请继续阅读。你也可以随时用hermes model切换提供商。
选项1:OpenRouter(入门推荐)
在openrouter.ai创建账户并生成API密钥。
安装程序已创建了包含完整模板的~/.hermes/.env。首先锁定权限:
chmod 600 ~/.hermes/.env
打开文件,在OPENROUTER_API_KEY=行设置你的API密钥:
nano ~/.hermes/.env
找到OPENROUTER_API_KEY=行,在=号后添加你的密钥。保存并退出(Ctrl+X,然后Y,然后Enter)。
设置默认模型:
hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4
确认文件对其他用户不可读:
ls -la ~/.hermes/.env
权限应显示-rw-------(600)。只有hermes用户可以读取此文件。
选项2:Nous Portal
Nous Research运营自己的推理门户,支持400+模型。如果你想留在Nous生态系统内:
hermes config set model.provider nous
hermes model命令会引导你完成认证。
选项3:自定义OpenAI兼容端点
如果你运行自己的推理服务器(Ollama、vLLM、llama.cpp)或使用其他提供商:
echo 'OPENAI_BASE_URL=http://localhost:11434/v1' >> ~/.hermes/.env
echo 'OPENAI_API_KEY=ollama' >> ~/.hermes/.env
echo 'LLM_MODEL=llama3.1:70b' >> ~/.hermes/.env
LLM提供商对比
| 提供商 | 环境变量 | 计费模式 | 备注 |
|---|---|---|---|
| OpenRouter | OPENROUTER_API_KEY |
按token计费,因模型而异(查看定价) | 200+模型,单一密钥 |
| Nous Portal | 通过hermes model |
按token计费(查看定价) | 400+模型,原生集成 |
| Anthropic | ANTHROPIC_API_KEY |
按token计费(查看定价) | 直接访问Claude |
| Google AI Studio | GOOGLE_API_KEY |
按token计费(查看定价) | Gemini模型,v0.8.0起原生支持 |
| xAI (Grok) | XAI_API_KEY |
按token计费(查看定价) | Grok模型,v0.9.0起原生支持 |
| Hugging Face | HF_TOKEN |
按token计费(查看定价) | 完整模型套件 |
| Ollama(本地) | OPENAI_BASE_URL + OPENAI_API_KEY |
免费(自托管) | 需要GPU VPS以获得良好速度 |
| vLLM | OPENAI_BASE_URL + OPENAI_API_KEY |
免费(自托管) | 需要GPU |
自v0.6.0起内置了提供商故障转移。你可以设置有序的提供商链,当某个提供商宕机时,智能体自动切换到下一个。
测试LLM连接是否正常:
hermes -m "What is 2+2? Reply with just the number."
如果收到回复,提供商配置成功。如果看到认证错误,请检查~/.hermes/.env中的API密钥。
如何配置审批模式?
Hermes Agent内置了审批系统,在执行可能危险的命令之前会征求确认。在服务器上请保持启用:
hermes config set approval_mode ask
三种模式:
- ask:在任何修改文件、安装包或访问网络的命令之前提示确认。推荐使用。自v0.8.0起,Telegram和Slack会显示原生审批按钮,无需手动输入回复。
- smart:AI模型评估风险,只对真正危险的命令提示确认。更快,但依赖AI的判断。
- off:不检查。每条命令立即执行。不要在服务器上使用。
如何将Hermes Agent连接到Telegram?
消息网关让你可以用手机与Hermes对话。Telegram是最常见的配置。网关通过出站连接访问Telegram API,因此无需开放入站端口。
第1步:创建Telegram机器人
打开Telegram,向@BotFather发送消息。发送以下命令:
/newbot- 输入机器人名称(例如"My Hermes Agent")
- 输入用户名(必须以
bot结尾,例如myhermes_agent_bot)
BotFather会回复一个机器人token,格式类似7123456789:AAHx...。复制它。
第2步:获取你的Telegram用户ID
在Telegram上向@userinfobot发送消息。它会回复你的数字用户ID。复制这个数字。
第3步:配置网关
将机器人token和你的用户ID添加到环境文件:
echo 'TELEGRAM_BOT_TOKEN=7123456789:AAHxYourTokenHere' >> ~/.hermes/.env
echo 'TELEGRAM_ALLOWED_USERS=your_numeric_user_id' >> ~/.hermes/.env
TELEGRAM_ALLOWED_USERS变量是一个安全控制。只有此处列出的用户ID才能与你的机器人交互。没有它,任何找到你机器人的人都可以向它发送命令。多个ID用逗号分隔。
第4步:测试网关
在前台启动网关:
hermes gateway
在Telegram中向你的机器人发送消息。消息会出现在终端中并返回回复。确认正常后按Ctrl+C停止。
如果机器人没有响应,检查:
~/.hermes/.env中的机器人token是否正确- 你的用户ID是否在
TELEGRAM_ALLOWED_USERS中 - VPS能否通过443端口访问
api.telegram.org(出站HTTPS)
Hermes现在支持16个平台。除Telegram外:Discord、Slack、WhatsApp、Signal、Matrix、iMessage(通过BlueBubbles)、WeChat、WeCom、Email、SMS、DingTalk、飞书/Lark、Mattermost、Home Assistant和Webhooks。运行hermes gateway setup可以使用交互式向导配置其中任意一个。
如何将Hermes Agent作为systemd服务运行?
在终端会话中运行hermes gateway意味着断开连接后它就会停止。systemd用户服务可以在注销后保持网关运行,并在崩溃或服务器重启时自动重启。
安装服务
Hermes提供了内置命令:
hermes gateway install
这会在~/.config/systemd/user/hermes-gateway.service创建服务文件并自动启用lingering。Lingering可以在你退出SSH后保持用户服务运行。
启动服务并设置开机自启:
systemctl --user enable --now hermes-gateway
检查服务状态:
systemctl --user status hermes-gateway
在输出中查找Active: active (running)。如果显示failed,检查日志。
查看日志
查看实时网关日志:
journalctl --user -u hermes-gateway -f
按Ctrl+C停止跟踪。网关日志显示每条传入消息、LLM调用和工具执行。
设置工作目录
默认情况下,网关使用主目录作为工作区。设置专用项目目录:
echo 'MESSAGING_CWD=/home/hermes/projects' >> ~/.hermes/.env
mkdir -p /home/hermes/projects
重启服务以应用更改:
systemctl --user restart hermes-gateway
通过浏览器管理
自v0.9.0起,Hermes内置了本地Web仪表盘。网关运行后,用以下命令打开:
hermes dashboard
这会启动一个基于浏览器的界面,你可以管理设置、浏览会话和技能、配置网关,无需使用终端。在VPS上,你可以通过SSH隧道转发仪表盘端口,从本地机器访问它。
如何备份Hermes Agent数据?
Hermes将所有状态存储在~/.hermes/中:记忆、学习的技能、会话历史、配置、定时任务和智能体角色。丢失它意味着智能体遗忘一切。
自v0.9.0起,Hermes内置了备份和恢复命令:
hermes backup
这会创建整个~/.hermes/目录的带时间戳的快照。在同一台服务器上恢复或迁移到新服务器:
hermes import /path/to/backup.tar.gz
要设置每日自动备份,用cron计划任务:
(crontab -l 2>/dev/null; echo "0 3 * * * /home/hermes/.local/bin/hermes backup") | crontab -
如需异地备份,将备份目录rsync到另一台机器或对象存储。仅在同一台VPS上保留备份无法防范磁盘故障。
如何更新Hermes Agent?
Hermes Agent包含内置更新命令。先备份,再更新:
hermes backup
hermes update
检查新版本:
hermes --version
检查更新后是否需要配置变更:
hermes config migrate
hermes doctor
config migrate会添加新的配置选项及其默认值。hermes doctor检查一切是否正常。
重启网关服务以运行新版本:
systemctl --user restart hermes-gateway
systemctl --user status hermes-gateway
如果更新后出现问题,从备份恢复:
systemctl --user stop hermes-gateway
hermes import /path/to/backup.tar.gz
systemctl --user start hermes-gateway
安全加固检查清单
在VPS上托管的执行终端命令的AI智能体需要注意安全。以下是本指南已配置的内容总结和一些额外步骤。
本指南中已配置:
- 非root用户(
hermes),拥有专用主目录 - UFW防火墙拒绝除SSH外的所有入站流量
- API密钥存储在权限为
600的~/.hermes/.env中 TELEGRAM_ALLOWED_USERS限制机器人访问仅限你的用户IDapproval_mode: ask要求对危险命令进行确认
额外加固:
定期审查智能体学习的技能:
ls -la ~/.hermes/skills/
技能是智能体编写并复用的脚本。像审查服务器上运行的任何代码一样审查它们。
监控网关日志,排查异常用户或可疑活动:
journalctl --user -u hermes-gateway --since "1 hour ago" --no-pager
Hermes在每个版本中都加强了安全态势:v0.7.0起阻止密钥泄露、v0.8.0中增加MCP OAuth 2.1 PKCE支持和SSRF防护、v0.9.0中新增路径穿越防护、shell注入中和以及Twilio webhook验证。保持安装更新以获得这些保护。
故障排除
自v0.9.0起,你可以在任何聊天会话中运行/debug,或从终端运行hermes debug share来生成诊断报告。这是识别问题的最快方式。
网关无法启动:
journalctl --user -u hermes-gateway -n 50 --no-pager
常见原因:无效的机器人token、缺少API密钥或网络问题。
Telegram机器人没有响应:
检查机器人token和允许的用户:
grep TELEGRAM ~/.hermes/.env
测试出站连接:
curl -s https://api.telegram.org/bot<YOUR_TOKEN>/getMe
返回包含你机器人信息的有效响应说明token和网络正常。
安装后找不到hermes命令:
source ~/.bashrc
如果仍然找不到,检查~/.local/bin是否在PATH中:
echo $PATH | tr ':' '\n' | grep local
内存使用过高:
检查资源消耗情况:
top -bn1 | head -20
如果智能体生成了长时间运行的进程,降低工作负载或升级VPS。
费用是多少?
在VPS上自托管Hermes Agent的费用包括服务器和LLM API使用。两个成本组成部分:
- VPS托管: 一台2+ vCPU和4 GB内存的VPS。查看Virtua.Cloud VPS方案了解当前定价。
- LLM API调用: 所有支持的提供商都采用按token计费。你的月度费用取决于选择的模型和使用频率。查看你的提供商定价页面了解当前费率。
真正的节省不仅是财务上的。你拥有智能体的数据,可以选择任何供应商,没有任何策略变更能在一夜之间让你停摆。
版权所有 2026 Virtua.Cloud。保留所有权利。 本内容为 Virtua.Cloud 团队原创作品。 未经书面许可,禁止复制、转载或再分发。
准备好亲自尝试了吗?
在您自己的 VPS 上运行 AI 代理。 →