Hermes Agent: デプロイメントモード

最終更新:2026-08-31

デプロイメントモードはHermes Agentがどこで動作するかを決めます——ローカルノートPC、Dockerコンテナ、クラウドサーバー、それともクラスター。正しいモードを選べば、安定してコストも抑えられます。

💡 ヒント: Hermesは4つのデプロイメントモードをサポート:ローカル単体、Dockerコンテナ、クラウドサーバー、クラスターモード。個人ユーザーにはローカルモード、チームにはDockerまたはクラウドサーバーを推奨。

📋 前提知識: 第2課 インストール、第3課 設定ファイル

1. 学ぶ内容

# 内容
4つのデプロイメントモードの比較
ローカルモード設定
Dockerデプロイ
クラウドサーバーデプロイ
クラスターモードと拡張

2. ストーリー

(1) 課題:デプロイメント方式の選択ミス

BobはローカルでHermesを動かしたが、PCをシャットダウンするとエージェントがオフラインに。チームには24/7オンラインのエージェントが必要。

(2) 解決策:シーンに応じたデプロイ選択

BASH
# Aliceの選択:
# 開発デバッグ → ローカルモード(コスト効率良く便利)
# チーム利用 → Dockerでサーバーにデプロイ(24/7オンライン)
# 高コンカレンシー → クラスターモード(水平スケール)

3. 4つのデプロイメントモードの比較

次元 ローカルモード 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%