← 中文首页

Hermes 自建部署

在 Hetzner 上跑 Hermes Agent:VPS 规格、Docker 与安全部署

Hetzner 提供 VPS,Hermes 负责运行智能体。买好服务器之后,还要完成模型配置、持久化存储、访问控制与日常维护;这里按实际部署顺序说明。

本文更新于 2026 年 9 月 24 日,针对 Hermes Agent 自建环境。VPS 规格是选型建议;Hetzner 的机型、价格和可选区域以控制台为准,本文不提供优惠码或返佣链接。

先选规格:远程模型 API 与本地推理分开算

使用远程模型 API 时,模型推理发生在供应商服务器上,但 Hermes 的文件处理、工具执行、浏览器和子进程仍消耗 VPS 资源。不能因为模型在云端,就认为本机内存不会成为瓶颈。

工作负载建议起点重点观察
单个助手,文字聊天、轻量定时任务2 vCPU / 4 GB RAM / 40 GB SSD内存峰值、日志与会话数据增长
浏览器自动化、代码构建、多个并行任务4 vCPU / 8 GB RAM / 80 GB SSD浏览器进程数量、CPU 持续占用、构建缓存
多个活跃实例或较重的数据处理先做代表性任务测试,再增加资源或拆分实例任务间争用、单实例限制、磁盘 I/O
在 VPS 上运行本地大模型按模型、量化、上下文和并发单独估算内存与 GPU模型权重之外的运行内存和推理速度

这些规格不是吞吐承诺。共享 vCPU 的负载表现可能波动;长期 CPU 密集任务可评估独享 CPU。不要把“能启动一个小模型”当作响应速度足够。Swap 可以缓解短时内存压力,但不能代替 RAM。

下单前在Hetzner Cloud 官网确认架构、磁盘、IPv4、流量和备份费用。优先选择与你要运行的镜像及工具依赖兼容的架构;区域选择同时考虑使用者、模型 API 和目标网站的延迟。中文用户应实测自己网络的连接质量,不以地理距离推断可用性。

第一步:创建 VPS,先把 SSH 留好

  1. 创建项目和服务器,选择受 Docker 支持的系统,例如 Ubuntu 24.04 LTS,并在创建时添加自己的 SSH 公钥。
  2. 通过本机终端连接服务器。首次连接先核对主机指纹,再执行系统更新;不要把私钥上传到云控制台。
  3. 创建日常管理账号并配置 sudo、公钥登录。在第二个终端验证新账号能登录和提权后,再考虑关闭密码登录与 root 远程登录。
  4. 保留已连接的终端,修改 SSH 配置后先运行 sudo sshd -t 检查语法,再重载服务并测试新连接,避免把自己锁在门外。

安装命令建议通过 SSH 粘贴。Hermes 官方 Docker 文档特别提醒:部分 VPS 网页控制台可能错误传递冒号等字符,导致卷挂载参数或密钥被改写。

第二步:防火墙只放行需要的入口

创建并实际关联 Hetzner Cloud Firewall:入站 TCP 22 仅允许你的管理 IP(IPv4 使用 /32,IPv6 使用 /128),其他入站默认不放行。动态 IP 用户应准备更新规则的方式;使用 VPN 管理时,确认 VPN 通路正常后再收紧 SSH。

Hetzner 防火墙文档说明,没有规则时入站阻断、出站允许。如果另外限制出站,需为 DNS、模型 API、镜像仓库和消息渠道留出连接;只开入站 443 并不能解决出站失败。

  • 仅使用主动出站连接的聊天渠道时,通常不需要公网应用入口;下面的示例不添加 -p 端口映射。
  • 需要 webhook 或公开网站时,再为反向代理按需开放 443;80 是否需要取决于证书签发与跳转方式。
  • 管理界面优先通过 VPN 或 SSH 隧道访问。公网反向代理需要认证和 HTTPS,TLS 证书本身不限制谁能登录。

不要仅靠 UFW 判断容器端口是否安全。Docker 官方说明指出,发布的容器端口可能绕过 UFW 规则。核对 Docker 映射、云防火墙以及 IPv4/IPv6 实际可达性;使用 host 网络也意味着不能依赖容器网络隔离。

第三步:安装 Docker,用固定镜像运行 Hermes

按Docker 的 Ubuntu 安装文档配置官方 apt 仓库,安装 Docker Engine 与 Compose 插件。用 sudo docker version 和 sudo docker compose version 检查安装。以下命令在同一个 SSH 会话、同一个管理账号下执行。

先从官方发布信息确认要使用的镜像版本和摘要。下面的 REPLACE_WITH_VERIFIED_DIGEST 是占位符,必须替换成已核验的 64 位 SHA-256 摘要。固定摘要可避免重新部署时悄悄换版本;这些命令用于新实例,不要覆盖已有数据目录。

export HERMES_IMAGE='nousresearch/hermes-agent@sha256:REPLACE_WITH_VERIFIED_DIGEST'
mkdir -p "$HOME/.hermes"
chmod 700 "$HOME/.hermes"
sudo docker pull "$HERMES_IMAGE"

# 首次初始化:按向导设置模型凭据和聊天渠道
sudo docker run -it --rm \
  -e HERMES_UID="$(id -u)" -e HERMES_GID="$(id -g)" \
  -v "$HOME/.hermes:/opt/data" \
  "$HERMES_IMAGE" setup

# 后台运行,保持相同的数据挂载与用户映射
sudo docker run -d --name hermes --restart unless-stopped \
  --log-opt max-size=10m --log-opt max-file=3 \
  -e HERMES_UID="$(id -u)" -e HERMES_GID="$(id -g)" \
  -v "$HOME/.hermes:/opt/data" \
  "$HERMES_IMAGE" gateway run

官方镜像将状态存入 /opt/data;这里映射到宿主机的 ~/.hermes,初始化向导会把密钥写入该目录的 .env。不要把密钥放进文章、聊天或 Git。用户映射参数可参照上游 Compose 示例,使用时以所选版本为准。

启动前在向导中限制允许使用机器人的账号。本文没有开启网页控制台或 API 服务;需要这些功能时,另外按对应版本文档设置监听地址和认证。Hermes 配置与 OpenClaw 不通用,不要套用另一框架的网关 YAML。

把 Hermes 放进 Docker,与让 Hermes 把工具命令放进另一个 Docker 沙箱,是两件事。后者需要单独配置执行后端。不要为了让工具“什么都能做”,直接挂载宿主机根目录或 Docker socket,也不要默认使用特权容器。

第四步:验证运行,并安排备份和升级

sudo docker ps --filter name=hermes
sudo docker logs --tail 80 hermes
sudo docker stats --no-stream hermes
sudo ss -lntup
df -h

容器显示运行中,只说明进程尚在。还要检查网关是否连接到目标渠道、重启后配置是否保留、端口是否符合预期,再用自己的账号做一次不含敏感信息的小任务测试;模型调用可能收费。

  • 备份:备份完整持久化目录和额外工作目录,不只备份镜像。为数据库取得一致性副本,可在维护窗口停下容器再复制;备份应加密并存到另一台机器或存储服务,定期试恢复。
  • 监控:观察宿主机内存、磁盘剩余空间、网关错误和任务失败。上面的日志限制仅针对 Docker 日志,数据目录内的应用日志与下载文件也要管理。
  • 升级:记录旧摘要、备份数据、检查目标版本迁移说明后再重建容器。若新版本修改了数据结构,回退可能需要旧镜像与升级前数据一起恢复。
  • 排错:频繁重启先看退出原因和内存;收不到消息先查渠道凭据、允许名单和出站连接;磁盘满先定位日志或缓存,避免盲删数据目录。

Hetzner 自建与托管:比较总成本和责任

VPS 月租只是其中一项。总成本包括服务器、IP 或额外网络费用、备份、模型 API、第三方工具,以及排障和更新的时间。自建也不意味着数据全部留在 VPS:远程模型、搜索服务和聊天平台仍会处理你发送给它们的数据。

比较项Hetzner 自建托管 Hermes
系统与依赖自己控制系统、镜像、依赖和网络按平台开放的权限与版本操作
维护工作自己负责补丁、监控、备份、恢复与容量平台承担约定范围内的基础设施维护,需核对具体服务内容
模型与工具费用自行管理模型账户和第三方订阅确认包含额度、超额计费与自带密钥支持
数据与迁移自己保管目录、凭据及异地备份确认数据保留、备份恢复与导出方式
适合谁能维护 Linux,需要系统控制权或自定义依赖的人愿意接受平台边界,希望减少基础设施维护的人

已经熟悉 SSH、Docker 和恢复流程,可以先用一台 VPS 验证实际负载。希望尽快使用助手,则可比较OpenClaw Launch 的 Hermes 托管等方案。托管也需要你管理使用者权限、模型预算与工具授权,不能只凭首月价格判断。

常见问题

在 Hetzner 跑一个 Hermes Agent,需要多大的 VPS?

使用远程模型 API、以文字任务为主时,可从 2 vCPU、4 GB RAM 和 40 GB SSD 起步。这是部署建议,不是官方最低配置或并发保证。浏览器、多路任务、代码构建会增加资源占用,应根据内存峰值、CPU 和磁盘增长调整规格。

运行 Hermes 必须开放公网端口吗?

不一定。本文的 Docker 示例只运行网关,不发布应用端口,适用于通过主动出站连接工作的渠道。使用 webhook、网页控制台或 API 时,才需要按对应功能配置入口、认证和防火墙;不要直接把管理端口开放给全网。

Docker 容器删除后,Hermes 的记忆还在吗?

前提是把数据目录持久化到宿主机,并且没有删除这个目录。本文将宿主机 ~/.hermes 挂载到容器 /opt/data,保存配置和状态。容器镜像不能代替数据备份,升级前也应备份完整目录。

Hetzner 自建一定比托管便宜吗?

不一定。除了 VPS,还要算模型 API、额外存储、备份、网络和维护时间。自建适合愿意维护 Linux、需要系统控制权的人;托管适合希望通过平台管理实例的人,但仍需确认资源限制、模型费用、备份与数据导出规则。

这套 Docker 配置也能直接用于 OpenClaw 吗?

不能直接复制。SSH、防火墙和备份原则通用,但本文的镜像、/opt/data 数据路径和 gateway run 命令针对 Hermes Agent。OpenClaw 使用自己的镜像、配置目录与启动方式,需按对应教程部署。

相关阅读

比较 Hermes 托管方案

如果你更希望通过平台管理实例,可先核对托管方案的资源、模型费用和功能边界,再决定是否自建。

查看 Hermes 托管