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) アーキテクチャ図
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。クラスターモードはローリングアップグレード。📖 まとめ
- 4つのモード:ローカル(個人)→ Docker(チーム)→ クラウドサーバー(企業)→ クラスター(大規模)
- ローカルモードはゼロコスト、最もプライバシーが高く、開発とテストに適している
- Docker Composeでワンクリックデプロイ、OllamaとWeb UI込み
- クラウドサーバーはセキュリティ強化が必要:認証、TLS、ネットワーク分離
- クラスターモードはRedis+PostgreSQLで共有メモリと高可用性を実現
📝 練習問題
- 基本(⭐): ローカルモードでHermesを起動し、Telegramプラットフォームに接続し、24時間の安定動作を確認してください。
- 中級(⭐⭐): Docker ComposeでHermes + Ollamaをデプロイし、ローカルオフライン推論を実現してください。
- 上級(⭐⭐⭐): クラウドサーバーにHermesをデプロイし、TLSとJWT認証を設定し、安全なリモートアクセスを実現してください。