Hermes Agent: 部署模式

最后更新:2026-08-31

部署模式决定了 Hermes Agent 在哪里运行——本地笔记本、Docker 容器、云服务器、还是集群。选对模式,稳定又省钱。

💡 提示:Hermes 支持四种部署模式:本地单机、Docker 容器、云服务器、集群模式。个人用户推荐本地模式,团队推荐 Docker 或云服务器。

📋 前置知识:第2课 安装、第3课 配置文件

1. 你将学到

编号 内容
四种部署模式对比
本地模式配置
Docker 部署
云服务器部署
集群模式与扩展

2. 故事

(1) 痛点:部署方式选错

Bob 在本地跑了 Hermes,但电脑关机 Agent 就离线。团队需要 24/7 在线的 Agent。

(2) 解法:按场景选部署

BASH
# Alice 的选择:
# 开发调试 → 本地模式(省钱方便)
# 团队使用 → Docker 部署在服务器(24/7在线)
# 高并发场景 → 集群模式(水平扩展)

3. 四种部署模式对比

维度 本地模式 Docker 云服务器 集群模式
适用 个人开发 团队/小企业 中型企业 大规模
在线时间 开机时 24/7 24/7 24/7
扩展性 ✅ 垂直 ✅ 垂直 ✅ 水平
数据安全 ✅ 本地 ✅ 本地 ⚠️ 云端 ⚠️ 分布式
成本 免费 服务器费 云费用
运维难度 ⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐

4. 本地模式

(1) 标准本地安装

BASH
# 安装
pip install hermes-agent[all]

# 启动
hermes serve --host 0.0.0.0 --port 8080

# 后台运行(Linux/macOS)
nohup hermes serve &

# 使用 systemd(Linux)
cat > /etc/systemd/system/hermes.service << EOF
[Unit]
Description=Hermes Agent
After=network.target

[Service]
Type=simple
User=alice
WorkingDirectory=/home/alice
ExecStart=/usr/local/bin/hermes serve
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

systemctl enable hermes
systemctl start hermes

(2) 本地模式配置

YAML
# ~/.hermes/config.yaml
deployment:
  mode: "local"
  host: "0.0.0.0"
  port: 8080
  
  # 本地模型支持(离线运行)
  local_model:
    enabled: true
    provider: "ollama"
    fallback_to_cloud: true

5. Docker 部署

(1) 单容器部署

BASH
# 拉取镜像
docker pull nousresearch/hermes-agent:latest

# 运行
docker run -d \
  --name hermes \
  -p 8080:8080 \
  -v ~/.hermes:/root/.hermes \
  -e OPENAI_API_KEY="${OPENAI_API_KEY}" \
  --restart unless-stopped \
  nousresearch/hermes-agent:latest

(2) Docker Compose(推荐)

YAML
# docker-compose.yml
version: "3.8"

services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-agent
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - ./data:/root/.hermes
      - ./projects:/root/projects
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
      - HERMES_MODEL_DEFAULT=gpt-4o
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3

  # Ollama 本地模型
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama-data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: ["gpu"]

  # Web UI
  web-ui:
    image: nousresearch/hermes-web:latest
    container_name: hermes-web
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - HERMES_API_URL=http://hermes:8080

6. 云服务器部署

(1) AWS 部署

BASH
# 使用 AWS EC2
# 1. 启动 EC2 实例(推荐 t3.medium)
# 2. 安装 Docker
# 3. 运行 Hermes

ssh ec2-user@your-instance

# 安装 Docker
sudo yum install -y docker
sudo systemctl start docker

# 运行 Hermes
docker run -d \
  -p 8080:8080 \
  -v /data/hermes:/root/.hermes \
  -e OPENAI_API_KEY="sk-..." \
  --restart unless-stopped \
  nousresearch/hermes-agent:latest

(2) 安全配置

YAML
# 云部署安全加固
security:
  # API 认证
  api:
    auth_enabled: true
    auth_type: "jwt"           # jwt / api_key / oauth
    jwt_secret: "${JWT_SECRET}"
    rate_limit: 100            # RPM

  # TLS
  tls:
    enabled: true
    cert: "/etc/ssl/hermes.crt"
    key: "/etc/ssl/hermes.key"

  # 网络隔离
  network:
    allowed_origins:
      - "https://your-domain.com"
    blocked_ips: []

7. 集群模式

(1) 架构图

100%
graph TB
    LB[负载均衡器] --> W1[Worker 1]
    LB --> W2[Worker 2]
    LB --> W3[Worker 3]
    
    W1 --> Redis[(Redis<br/>共享记忆)]
    W2 --> Redis
    W3 --> Redis
    
    W1 --> DB[(PostgreSQL<br/>持久存储)]
    W2 --> DB
    W3 --> DB
    
    W1 --> MQ[RabbitMQ<br/>任务队列]
    W2 --> MQ
    W3 --> MQ

(2) 集群配置

YAML
# docker-compose.cluster.yml
version: "3.8"

services:
  hermes-master:
    image: nousresearch/hermes-agent:latest
    environment:
      - HERMES_ROLE=master
      - HERMES_WORKERS=3
      - REDIS_URL=redis://redis:6379
      - DATABASE_URL=postgresql://hermes:pass@postgres:5432/hermes
    depends_on:
      - redis
      - postgres

  hermes-worker:
    image: nousresearch/hermes-agent:latest
    environment:
      - HERMES_ROLE=worker
      - REDIS_URL=redis://redis:6379
    deploy:
      replicas: 3
    depends_on:
      - redis

  redis:
    image: redis:7-alpine
    volumes:
      - redis-data:/data

  postgres:
    image: postgres:16-alpine
    environment:
      - POSTGRES_DB=hermes
      - POSTGRES_USER=hermes
      - POSTGRES_PASSWORD=pass
    volumes:
      - pg-data:/var/lib/postgresql/data

❓ 常见问题

Q 个人用户选哪种模式?
A 本地模式。简单、免费、隐私最好。需要 24/7 在线时再考虑 Docker。
Q Docker 和直接安装哪个好?
A Docker 隔离性好、易于迁移和升级。直接安装更轻量、延迟更低。按需选择。
Q 云部署数据安全吗?
A API Key 加密存储、TLS 传输加密、可选加密磁盘。但数据毕竟在云端,合规要求高的场景建议本地部署。
Q 集群模式什么时候需要?
A 并发用户 >50、每分钟请求 >100、需要高可用时。小团队不需要。
Q 如何监控部署状态?
A hermes status 查看运行状态,/health API 健康检查,Docker 用 docker ps
Q 如何平滑升级?
A Docker 方式最简单——拉新镜像重启。本地安装用 pip install --upgrade。集群模式滚动升级。

📖 小节


📝 作业

  1. 基础题(难度⭐):在本地模式启动 Hermes,连接 Telegram 平台,验证 24 小时稳定运行。
  2. 进阶题(难度⭐⭐):使用 Docker Compose 部署 Hermes + Ollama,实现本地离线推理。
  3. 挑战题(难度⭐⭐⭐):在云服务器上部署 Hermes,配置 TLS 和 JWT 认证,实现安全的远程访问。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏